2014년 2월 20일 목요일

Maven을 사용하여 release와 snapshot을 구분하여 사내 저장소에 deploy 하기

Maven을 사용하여 release와 snapshot을 구분하여 사내 저장소에 deploy 하기 위해서 pom.xml 에 아래의 내용을 추가합니다.
....
 1      <profiles>
 2         <profile>
 3             <id>dev</id>
 4             <distributionManagement>
 5                 <repository>
 6                     <name>snapshot artifact</name>
 7                     <id>release</id>
 8                     <url>http://[host]:[port]/nexus/content/repositories/release/</url>
 9                 </repository>
10                 <snapshotRepository>
11                     <name>snapshot artifact</name>
12                     <id>snapshot</id>
13                     <url>http://[host]:[port]/nexus/content/repositories/snapshot/</url>
14                 </snapshotRepository>
15             </distributionManagement>
16         </profile>
17     </profiles>
....
<distributionmanagement> 안에 <repository>와 <snapshotrepository>가 있는데 이들이 각각 release 버전과 snapshot 버전을 deploy하기 위한 장소가 됩니다. 이 때 주의할 것은 <repository>와 <snapshotrepository>안에 있는<id> 인데, 이 안에 들어갈 값은 settings.xml 파일의 <server>의 id 여야 합니다. <server>는 deploy할 서버의 사용자 아이디와 비밀번호를 지정합니다.
settings.xml
....
 1   <servers>
 2     <server>
 3       <id>release</id>
 4       <username>deploy</username>
 5       <password>deploy</password>
 6     </server>
 7     <server>
 8       <id>snapshot</id>
 9       <username>deploy</username>
10       <password>deploy</password>
11     </server>
12   </servers>
....
Maven으로 deploy할 때에는 명령 라인에서 다음과 같이 입력합니다. -P 옵션은 프로파일을 지정합니다.

mvn deploy -P dev 

이와 같이 했을 때, release 저장소에 업로드될지 snapshot 저장소에 업로드 될지 여부는 version에 의해 결정됩니다.
version에 -SNAPSHOT이 있으면 snapshot으로 없으면 release로 업로드가 됩니다

댓글 없음:

댓글 쓰기