在开发团队数据较多,有发布交集的迭代开发时,版本号的命名,依赖版本号的修改,会加重我们的工作负担。发布版本改版本号这种既没有技术含量,又费神的工作不应该让机器去完成吗?(依赖版本号写错,有时候会造成麻烦)接下来我将带你一起完成maven自动化部署。
maven插件官网文档
<project>
...
<build>
<finalName>mvn-auto-releasefinalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-release-pluginartifactId>
<version>3.0.0-M1version>
<configuration>
<tagBase>https://github.com/Luolanjiao/test-auto-release/tree/tagstagBase>
configuration>
plugin>
plugins>
pluginManagement>
build>
...
project>
<project>
...
<scm>
<connection>scm:git:https://github.com/Luolanjiao/test-auto-release.gitconnection>
<developerConnection>scm:git:https://github.com/Luolanjiao/test-auto-release.gitdeveloperConnection>
<url>https://github.com/Luolanjiao/test-auto-release.giturl>
scm>
project>
在pom.xml文件中设置发布的私服地址,私服地址要对应上篇文章中启用的nexus服务的仓库地址。仓库分为几类,其中的release和snapshot是用来存放私有应用的,点击对应的仓库可以查看配置信息,具体看图1。
<project>
...
<distributionManagement>
<repository>
<id>releasesid>
<name>Releasesname>
<url>http://localhost:8081/nexus/content/repositories/releasesurl>
repository>
<snapshotRepository>
<id>snapshotsid>
<name>Snapshotsname>
<url>http://localhost:8081/nexus/content/repositories/snapshotsurl>
snapshotRepository>
distributionManagement>
project>
<repositories>
<repository>
<id>publicid>
<name>publicname>
<url>http://localhost:8081/nexus/content/repositories/publicurl>
<releases><enabled>trueenabled>releases>
<snapshots><enabled>trueenabled>snapshots>
repository>
repositories>
在setting.xml中设置mirror为nexus仓库,以此可下载私服上的资源,且也可下载中央仓库的资源。因为私服找不到本地资源时会转为代理请求中央仓库。
<servers>
<server>
<id>releasesid>
<username>adminusername>
<password>admin123password>
server>
<server>
<id>snapshotsid>
<username>adminusername>
<password>admin123password>
server>
servers>
<mirror>
<id>publicid>
<mirrorOf>*mirrorOf>
<name>my nexusname>
<url>http://localhost:8081/nexus/content/groups/public/url>
mirror>
版本处于快照版本—— xxx-SNAPSHOT
例如,我的项目版本正处于1.0.3-SNAPSHOT
mvn release:prepare
maven会提示你发布的版本号和新开发版本号,如果默认则直接回车,需要指定则输入指定的版本号后回车,效果如下图:
说明:
release:prepare命令执行包含了clean、resource、compile、testResources、testComplie、test、war
一是生成预备文件,二是将pom.xml文件中的版本号变更为了新的开发版本号。
执行release:prepare命令后会自动生成执行清单文件(这两个文件一般不需要关心,因为最终执行perform命令后,这两个文件会被自动删除):
release.properties
pom.xml.releaseBackup
可以看到下图,版本号已经由"1.0.3-SNAPSHOT"变更为"1.0.4-SNAPSHOT"。
mvn release:perform
perform执行的最终目的是deploy。不仅与release:prepare一样执行了clean、resource、compile、testResources、testComplie、test、war阶段命令,还执行了install,deploy。以此看来,不需要先执行prepare命令也可以直接执行perform命令。