1. 程式人生 > >maven2中snapshot快照庫和release發布庫的應用

maven2中snapshot快照庫和release發布庫的應用

str packaging 正式版 默認 階段 發布 maven2 pac 靈活

在之前的文章中介紹了maven2中snapshot快照庫和release發布庫的區別和作用,我今天這裏要介紹的是如何在項目中應用snapshot和release庫,應用snapshot和release庫達到不同環境下發布不同的版本的目的,首先看一個pom文件的定義:

 1 <project>
 2     <modelVersion>4.0.0</modelVersion>
 3     <groupId>cc.mzone</groupId>
 4     <artifactId>myjar</artifactId>
 5
<version>${project.release.version}</version> 6 <packaging>jar</packaging> 7 8 <distributionManagement> 9 <repository> 10 <id>mzone-release</id> 11 <url>http://192.168.1.88/nexus/content/repositories/mzone-release</url>
12 </repository> 13 <snapshotRepository> 14 <id>mzone-snapshot</id> 15 <url>http://192.168.1.88/nexus/content/repositories/mzone-snapshot</url> 16 </snapshotRepository> 17 </distributionManagement> 18 19 <properties> 20
<project.release.version>0.1-SNAPSHOT</project.release.version> 21 </properties> 22 23 <profiles> 24 <profile> 25 <id>product</id> 26 <properties> 27 <project.release.version>0.1</project.release.version> 28 </properties> 29 </profile> 30 </profiles> 31 </project>

首先我們看到pom文件中version的定義是采用占位符的形式,這樣的好處是可以根據不同的profile來替換版本信息,比如maven默認是使用0.1-SNAPSHOT作為該模塊的版本。

1、如果在發布時使用mvn deploy -P product的命令,那麽會自動使用0.1作為發布版本,那麽根據maven處理snapshot和release的規則,由於版本號後不帶-SNAPSHOT故當成是正式發布版本,會被發布到release倉庫;

2、如果發布時使用mvn deploy命令,那麽就會使用默認的版本號0.1-SNAPSHOT,此時maven會認為是快照版本,會自動發布到快照版本庫。

在distributionManagement段中配置的是snapshot快照庫和release發布庫的地址,我這裏是采用nexus作為鏡像服務器。對於版本庫主要是id和url的配置,配置完成後就可以通過mvn deploy進行發布了,當然了,如果你的鏡像服務器需要用戶名和密碼,那麽還需要在(.m2文件夾)maven的settings.xml文件中做如下配置:

 1 <servers>
 2     <server>
 3         <id>mzone-release</id>
 4         <username>deployment</username>
 5         <password>deployment</password>
 6     </server>
 7     <server>
 8         <id>mzone-snapshot</id>
 9         <username>deployment</username>
10         <password>deployment</password>
11     </server>
12 </servers>

註意這裏配置的server的id必須和pom文件中的distributionManagement對應倉庫的id保持一致,maven在處理發布時會根據id查找用戶名稱和密碼進行登錄和文件的上傳發布。

之後在項目下執行mvn clean deploy命令,將maven項目打包成jar包即可。

我們這裏通過profile的定義就可以在發布靈活切換snapshot快照版本和release正式版本了,在被依賴的組件中也可以使用profile來定義在開發階段使用快照庫,在發布階段使用正式庫的功能,只需要在不同的profile中覆蓋默認的properties屬性值即可。

maven2中snapshot快照庫和release發布庫的應用