티스토리 뷰


와. 신나는 금요일입니다.

내일은 크리스마스 이브입니다ㅎ

모두 즐거운 크리스마스 보내시길.... ^^


오늘은...

메이븐을 이용하여 빌드 산출을을 원격 저장소, 넥서스 저장소(nexus repository)로 배포하는 걸 해보도록 하겠습니다.

사실은 크게 보면 원격저장소에 내가 빌드한 산출을을 배포하는것도 되겠지만,

프로젝트를 진행하면서 넥서스의 저장소에 서드파티 라이브러리를 자주 추가하거나 변경하는 경우가 생기는데,

이럴때 메이븐으로 라이브러리를 넥서스 저장소에 추가할 때, 많이 사용합니다. 물론 저만..ㅋㅋㅋ


저도 뭐 빌드 결과물은 보통 git이나 svn에서 ci 툴을 (jenkins에서나 hudson) 이용하여 직접 배포하니까,

빌드 잘 된걸 굳이 명령어로 다시 배포하고 하지는 않으니까요ㅋㅋㅋ


자 그럼 결과적으로 명령어 먼저 보자면,

윈도우 또는 리눅스 쉘에서 다음과 같이 실행합니다.


mvn deploy:deploy-file

-DgroupId=라이브러리그룹

-DartifactId=라이브러리명

-Dversion=버전

-Dpackaging=jar

-Dfile=/path/to/deploy/file.jar

-DrepositoryId=repository-id

-Durl=repository-url



자세한 옵션 설명은... 대략 다음과 같습니다. 물론 이건 그냥 제가 생각하고 있는 사견입니다.

-DgroupId : 라이브러리 그룹. 일반적으로 패키지명. 예로 org.apache.commons. 보통 kr.co.mycompany처럼 도메인 뒤집어서도 많이 사용. 

-DartifactId : 라이브러리명. 대부분 프로젝트명을 사용합니다. 예를 들자면, 아파치 commons 프로젝트들처럼 commons-io 이런식인거죠.

-Dversion : 라이브러리, 패키지의 버전을 명시합니다.

-Dpackaging : 해당 라이브러리나 패키지가 어떤 형식으로 구성되어 있는지 명시합니다. jar, war인지 아니면 zip 형태인지를 의미합니다.

-Dfile : 실제 원격저장소에 배포하고자 하는 대상 파일을 지정합니다.

-DrepositoryId : 원격 저장소의 아이디. 이 아이디는 다른 아이디가 아니고 $MAVEN_HOME/conf/settings.xml에 repository에 등록한 넥서스 저장소의 아이디를 의미합니다. 어떤 아이디인지 고민하시면 안됩니다.

-Durl : 해당 저장소의 url을 의미합니다. 퍼블릭인지 서드파티인지에 따라서 넥서스에 보이는 저장소 주소를 입력하시면 됩니다.



아, 참고로 위 옵션에서 file까지는 로컬 메이븐에 install:install-file 라이프사이클로 외부 라이브러리를 추가할때도 동일합니다.


사실 설명이 어설퍼서 이해 잘 안되실수도 있을것 같아서... 실제 제가 사용할 때...를 보시면..


mvn deploy:deploy-file

-DgroupId=kr.co.gggoose

-DartifactId=database-migrator-tool

-Dversion=v1.83

-Dpackaging=jar

-Dfile=/home/fisher/database-migrator-tool-v1.83.jar

-DrepositoryId=nexus-public

-Durl=http://localhost:38220/nexus/content/repositories/thirdparty


이렇게 사용합니다.

이해가 좀 되실까요??? ㅎㅎㅎ



그럼 크리스마스 다들 잘 보내시고

새해를 시스템 오픈과 함께 맞이하셔야 하시는 대한민국의 모든 개발자분들도 화이팅 하십시요^^ ㅋ






댓글