[maven] 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.


답변

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

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

답변

나에게 문제의 원인은 -source.jars가 허용 된 답변의 원인 중 하나로 언급 된 것처럼 두 번 업로드되었습니다 (maven-source-plugin 사용). 내가 언급 한 답변으로 리디렉션 :
Maven 릴리스 플러그인 실패 : 소스 아티팩트가 두 번 배포 됨


답변

나는 오늘이 정확한 문제가 있었고 문제는 내가 릴리스하려는 버전이 이미 Nexus 저장소에 있다는 것입니다.

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


답변

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


답변

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

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