在開發團隊數據較多,有發佈交集的迭代開發時,版本號的命名,依賴版本號的修改,會加重我們的工作負擔。發佈版本改版本號這種既沒有技術含量,又費神的工作不應該讓機器去完成嗎?(依賴版本號寫錯,有時候會造成麻煩)接下來我將帶你一起完成maven自動化部署。
版本變更自動化部署
一、引入自動化工具——maven release插件
- pom.xml文件中引入release插件:
<project>
...
<build>
<finalName>mvn-auto-release</finalName><!--自主命名-->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<tagBase>https://github.com/Luolanjiao/test-auto-release/tree/tags</tagBase><!--配置你的tag地址,我用的是gitub倉庫-->
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
...
</project>
- 配置scm資源配置服務的信息,告訴release插件代碼資源的位置。
<project>
...
<scm>
<connection>scm:git:https://github.com/Luolanjiao/test-auto-release.git</connection>
<developerConnection>scm:git:https://github.com/Luolanjiao/test-auto-release.git</developerConnection>
<url>https://github.com/Luolanjiao/test-auto-release.git</url>
</scm>
</project>
二、配置發佈目的地——私服
2.1 告訴maven發佈倉庫的地址
在pom.xml文件中設置發佈的私服地址,私服地址要對應上篇文章中啓用的nexus服務的倉庫地址。倉庫分爲幾類,其中的release和snapshot是用來存放私有應用的,點擊對應的倉庫可以查看配置信息,具體看圖1。
<project>
...
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>
圖1:nexus私服倉庫信息
2.2 告訴maven下載構件的倉庫地址
<repositories>
<repository>
<id>public</id><!--id是自定義的-->
<name>public</name><!--name是自定義的-->
<url>http://localhost:8081/nexus/content/repositories/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
三、全局設置maven私服倉庫
在setting.xml中設置mirror爲nexus倉庫,以此可下載私服上的資源,且也可下載中央倉庫的資源。因爲私服找不到本地資源時會轉爲代理請求中央倉庫。
- 先配置service訪問信息,如果需要密碼登錄需要在services節點中配置;
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
- 配置鏡像
<mirror>
<id>public</id>
<mirrorOf>*</mirrorOf>
<name>my nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>
四、運行自動化部署命令
1. prepare 命令
1.1 執行前項目版本狀態:
版本處於快照版本—— xxx-SNAPSHOT
例如,我的項目版本正處於1.0.3-SNAPSHOT
1.2 命令執行:
mvn release:prepare
maven會提示你發佈的版本號和新開發版本號,如果默認則直接回車,需要指定則輸入指定的版本號後回車,效果如下圖:
說明:
release:prepare命令執行包含了clean、resource、compile、testResources、testComplie、test、war
1.3 執行效果:
一是生成預備文件,二是將pom.xml文件中的版本號變更爲了新的開發版本號。
1.3.1 生成預備文件
執行release:prepare命令後會自動生成執行清單文件(這兩個文件一般不需要關心,因爲最終執行perform命令後,這兩個文件會被自動刪除):
release.properties
pom.xml.releaseBackup
1.3.2 變更新的開發版本號
可以看到下圖,版本號已經由"1.0.3-SNAPSHOT"變更爲"1.0.4-SNAPSHOT"。
2. perform 命令
2.1 執行命令
mvn release:perform
2.2 命令執行的內容:
perform執行的最終目的是deploy。不僅與release:prepare一樣執行了clean、resource、compile、testResources、testComplie、test、war階段命令,還執行了install,deploy。以此看來,不需要先執行prepare命令也可以直接執行perform命令。
2.3 執行效果:
查看nexus私服倉庫,可以看到剛剛deploy的1.0.3版本包。
以此部署完成。