IT

Nexus에서 아티팩트를 배포 할 때 오류 발생

lottoking 2020. 9. 13. 10:56
반응형

Nexus에서 아티팩트를 배포 할 때 오류 발생


Nexus 서버의 내 저장소에 아티팩트를 배포 할 때 오류가 발생합니다. "아티팩트 배포 실패 : 아티팩트를 배포 할 수 없습니다." "http : /// my_artifact 파일을 전송하지. 반환 코드 : 400"

다음 maven 로컬 구성으로 하나의 사용자 정의 저장소 my_repo로 Nexus를 실행하고 있습니다.

settings.xml

<server>
    <id>my_repo</id>
    <username>user</username>
    <password>pass</password>
 </server>
 ...
 <mirror>
    <id>my_repo</id>
    <name>Repo Mirror</name>
    <url><my_url_to_my_repo></url>
    <mirrorOf>*</mirrorOf>
  </mirror>
  • 사용자는 my_repo에 작성 / 읽기 / 쓰기 권한이 있습니다.

pom.xml

<distributionManagement>
        <repository>
            <id>my_repo</id>
            <name>my_repo</name>
            <url><my_url_to_my_repo></url>
            <layout>default</layout>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url><my_url_to_my_snapshot_repo></url>
        </snapshotRepository>
    </distributionManagement>

그리고 나는 실행

mvn deploy

오류가 발생합니다. 어떤 생각?


내가 생각할 수있는 몇 가지 :

  • 사용자 자격 증명이 잘못되었습니다.
  • 서버 URL이 잘못되었습니다.
  • 사용자는 배치 저장소에 대한 액세스 권한이 없습니다.
  • 사용자는 특정 저장소 대상에 대한 액세스 권한이 없습니다.
  • 아티팩트가 릴리스 (-SNAPSHOT 버전 아님) 인 경우 해당 버전으로 이미 배포되었습니다.
  • 저장소가 각 아티팩트의 배포에 적합하지 않습니다 (예 : 스냅 샷 버전의 릴리스 저장소, 호스트 저장소 프록시 저장소 또는 그룹).

이를 확인하고 여전히 문제가 발생하면 여기에 자세한 내용을 제공하십시오.


별도의 답변을 작성하십시오. 답변은 수락 된 답변에 대한 의견에서 수락 수 있습니다.

아티팩트의 버전을 -SNAPSHOT.


나에게 문제의 원인은 -source.jars가 허용 된 답변의 원인 중 하나로 언급했듯이 maven-source-plugin을 사용하여 두 번 업로드했습니다. 내가 언급 한 답변으로 리디렉션 : Maven 릴리스 오류 메시지 : 소스 아티팩트가 두 번 배포 됨


나는 오늘이 버전이 버전이 이미 Nexus 저장소에있는 것입니다.

제 경우에는 이전 릴리즈 : 호출 중에 네트워크 연결이 더러워 졌기 때문일 수 있습니다. 연결이 끊어졌지만 릴리스가 성공한 것입니다.


다음을 시도하면 400 잘못된 요청이 반환됩니다.

  1. 배포] 스냅 샷 끝나는 유물 (또는 버전) -snapshot를릴리스 저장소
  2. 릴리스 아티팩트 ( -SNAPSHOT로 끝나지 않는 버전 )를 스냅 샷 저장소 배포 합니다.
  3. 릴리스 아티팩트 동일한 버전을 릴리스 저장소두 번 이상 배치


드물게 Nexus에 SAME STABLE 아티팩트를 재배포해야하는 경우 기본적으로 실패합니다. 그런 다음 다시 배포 할 목적으로 Nexus에서 아티팩트를 삭제하면 (웹 인터페이스를 통해) 배포가 실패합니다. 예를 들어 jar 또는 pom을 제거하는 것만으로는 디렉토리에있는 다른 파일이 삭제되지 않기 때문입니다. 상자에 로그온하고 디렉터리 전체를 삭제해야합니다.


  • 상위 pom application ==> 버전에서 다음과 같이 태그를 넣으십시오. xxx-SNAPSHOT

예 : 0.0.1-SNAPSHOT

  • "-SNAPSHOT": 매우 중요합니다.

nexus (릴리스)에 이미 존재하지 않는지 (아티팩트 및 버전) 확인하십시오. 이 경우 잘못된 요청을 반환합니다.


오늘도 "반환 코드 : 400, ReasonPhrase : 잘못된 요청"을 추가하여 동일한 문제가 발생했습니다. 위의 답변에서 "아티팩트가 이미 해당 버전에 배포 된 경우"문제로 판명되었습니다. 여기에 링크 설명을 입력하십시오.

아직 언급되지 않은 한 가지 해결책은 릴리스 저장소에 재배포 할 수 있도록 Nexus를 구성하는 것입니다. 이 설정은 이유가 있기 때문에 모범 사례가 아닐 수도 있습니다. 그럼에도 불구하고 Nexus 리포지토리의 "구성"-탭에서 "액세스 설정"으로 이동하여 "배포 정책"을 "재배포 허용"으로 설정할 수 있습니다.


위 답변 중 하나라도 해결되면 (아래 첨부 된 NEXUS 스크린 샷)의 관리자 측에서 직접 새 아티팩트를 만들 수 있습니다.

  1. Login to nexusUI http : // YOUR_URL : 8081 / nexus (사용자 이름 : admin 기본 비밀번호 : admin123 )
  2. Click repositories 왼쪽에서 repo를 클릭하십시오. 예 : 릴리스를 클릭하십시오.
  3. artifact Upload(마지막 탭)을 선택합니다 .
  4. 선택 GAV definition으로 GAV Param그런 다음 그룹 ID, 아티팩트 ID 및 버전을 입력합니다 -.
  5. Jar 파일을 선택하십시오.
  6. 이슈 업로드를 클릭합니다. 그게 다야!

이제 프로젝트에 해당하는 내용을 추가 할 수 있습니다 (아래 스크린 샷).

여기에 이미지 설명 입력


이는 배포하려는 버전 번호를 금지하는 버전에 대한 명명 정책이있는 경우에도 발생할 수 있습니다. 제 경우에는 (리포지토리를 릴리스하기 위해) 버전을 업로드하려고 2.0.1했지만 나중에 넥서스 구성이 릴리스에 정수 이외의 다른 것을 허용하지 않는다는 것을 알게되었습니다.

나중에 버전으로 시도 2하고 성공적으로 배포했습니다.

오류 메시지는 확실히 도움이되지 않습니다.

Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]

더 나은 메시지는 version 2.0.1 violates naming policy


400 오류의 경우 "배포 정책"저장소에서 일반적으로 "재배포 비활성화"를 확인합니다. 대부분의 경우 라이브러리 버전이 이미 있기 때문에 "Could not PUT put ' https : //yoururl/some.jar ' 라는 메시지를 받았습니다 . 서버에서 상태 코드 400 수신 : 저장소에서 자산 업데이트를 허용하지 않습니다." 저장소 이름 "

따라서이 문제를 해결할 수있는 몇 가지 옵션이 있습니다. 1- 재배포 허용 2- 업로드하려는 저장소에서 버전 삭제 3- 버전 번호 변경

참고 URL : https://stackoverflow.com/questions/18649486/error-when-deploying-an-artifact-in-nexus

반응형