2016/08/02 11:49

nexus에 snapshot library 올리기 Architect



특정 프로젝트에서 snapshot 라이브러리를 사용하게 되었는데, (spring-batch-excel)
해당 라이브러리가 자동으로 내려받아지지 않아 
nexus에 올려달라는 요청을 받았다. 

snapshot 라이브러리는 그냥 nexus에 올려지지 않는다.
3rd party repository 옵션 중에 repository policy 옵션이 있는데
이게 snapshot으로 되어 있어야 올려진다. 
단, snapshot의 경우에는 release와는 달리 업로드 방식으로 라이브러리를 올릴 수가 없다.
즉, maven deploy 기능을 통해서만 배포가 가능하다. (mvn deploy)

가장 쉽게 가는 방법은.. 
이전까지는 release 버전만 올렸었기 때문에
당장 드는 생각은 snapshot 이라는 이름만 떼어버리고 올리는 방법. 

하지만 말 그대로 영 찝찝한 방법이다. 
그래서 직접 해봤다.. ㅎㅎ;;; 



일단 nexus에 repository policy가 snapshot으로 설정되어 있는건 기본으로 깔고.... 
1. nexus 계정에 deployment role이 추가되어 있는지 확인
2. maven settings.xml 파일 내 server 태그를 통해 해당 계정 정보를 등록
3. snapshot 프로젝트의 pom.xml 에 distributionManagement > snapshotRepository 태그 작성
4. mvn deploy 실행

위 순서대로 진행하면 된다. 




그럼 자세히 알아보자. 

1번의 경우 nexus 에서 security 메뉴 안에 users 메뉴에 들어가
계정을 하나 생성 or 기존 계정 선택 -> role management 에서 Add -> Nexus Deployment Role 추가 
이렇게 한 계정 정보를 2번 settings.xml 파일에 등록해 주어야 한다. 

settings.xml 파일 중간쯤 보면.. 
<servers> 태그 아래에 아래 내용을 추가한다. 
-------------------
<server>
      <id>thirdpartysnapshot</id>
      <username>userId</username>
      <password>userPass</password>
</server>
--------------------

혹시 settings.xml 파일을 못찾는다면.. 
기본 위치는 C드라이브 > 사용자 > 사용자 계정명 > .m2 폴더 이래에 있다.

3번의 경우 아래와 같이 세팅하면 된다. 
-------------------
<distributionManagement>
 <snapshotRepository>
   <id>thirdpartysnapshot</id>
   <url>http://localhost:8080/nexus/content/repositories/thirdpartysnapshot</url>
 </snapshotRepository>
</distributionManagement>
--------------------

여기서 중요한 점이 위 snapshotRepository 내 ID 가 2번에서 설정한 server ID 값과 동일해야 한다는 것이다. 
ㅎㅎ 이것때문에 삽질 많이 했다.. 

그리고 4번과 같이 deploy를 실행한다. 

정상 처리되었다면 아래와 같은 아름다운 메시지를 받아볼수 있다. 
-------------------
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ spring-batch-excel ---
[INFO] Downloading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/maven-metadata.xml
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.013755-1.jar
[INFO] Uploaded: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.013755-1.jar (59 KB at 226.3 KB/sec)
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.013755-1.pom
[INFO] Uploaded: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.013755-1.pom (4 KB at 77.9 KB/sec)
[INFO] Downloading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/maven-metadata.xml
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/maven-metadata.xml
[INFO] Uploaded: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/maven-metadata.xml (793 B at 16.1 KB/sec)
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/maven-metadata.xml
[INFO] Uploaded: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/maven-metadata.xml (303 B at 8.7 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.258 s
[INFO] Finished at: 2016-08-02T10:37:56+09:00
[INFO] Final Memory: 21M/221M
[INFO] ------------------------------------------------------------------------
--------------------

내가 계속 고생했던 이유는 아래와 같은 메시지 때문이었다.. 
--------------------
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ spring-batch-excel ---
[INFO] Downloading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/maven-metadata.xml
[INFO] Downloaded: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/maven-metadata.xml (793 B at 5.9 KB/sec)
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.024537-2.jar
[INFO] Uploading: http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.024537-2.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.847 s
[INFO] Finished at: 2016-08-02T11:45:37+09:00
[INFO] Final Memory: 20M/214M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project spring-batch-excel: Failed to deploy artifacts: Could not transfer artifact org.springframework.batch:spring-batch-excel:jar:0.5.0-20160802.024537-2 from/to 123 (http://localhost:8080/nexus/content/repositories/thirdpartysnapshot): Access denied to http://localhost:8080/nexus/content/repositories/thirdpartysnapshot/org/springframework/batch/spring-batch-excel/0.5.0-SNAPSHOT/spring-batch-excel-0.5.0-20160802.024537-2.jar. Error code 401, Unauthorized -> [Help 1]
--------------------

이게 위에서 언급한대로 deploy가 가능한 계정을 이용해야하고, settings.xml 에 등록되어야 하고.. 
마지막으로 pom.xml 에 해당 아이디와 동일한 이름으로 repository가 등록되어 있어야 한다. 

다른 분들은 나보다 조금만 삽질하길 바라며..... 


덧글

댓글 입력 영역