Maven命令:deploy和release命令
本文介绍deploy及release命令,首先需在maven配置文件conf/settings.xml配置好私服
示例settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<!-- 配置发布私服用户名密码 -->
<server>
<id>release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!--设置私库mirror 表示maven所有的请求都由nexus来处理-->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Mirror.</name>
<url>http://192.168.245.130:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<!-- 仓库及插件仓库 -->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://192.168.245.130:8081/nexus/content/groups/public/</url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url>http://192.168.245.130:8081/nexus/content/groups/public/</url>
<release><enabled>true</enabled></release>
<snapshots><enabled>true></enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 激活 -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
同时项目的pom.xml需要配置私服
<!-- 配置代码库 -->
<scm>
<connection>scm:svn:http://bbs.bao.org/svn/allhode/jaxrs/jaxrs-interface/</connection>
<developerConnection>scm:svn:http://bbs.bao.org/svn/allhode/jaxrs/jaxrs-interface/</developerConnection>
</scm>
<build>
<!-- 此插件配置release版本发布之后打tag位置 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-7</version>
<configuration>
<tagBase>http://bbs.bao.org/svn/allhode/jaxrs/tags</tagBase>
</configuration>
</plugin>
</plugins>
</build>
<!--发布私服地址-->
<distributionManagement>
<repository>
<id>release</id>
<name>Project Release</name>
<url>http://192.168.245.130:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Project SNAPSHOTS</name>
<url>http://192.168.245.130:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
执行命令mvn clean deploy将项目发布到私服中(详细的说明可参考maven官方文档)
注意:deploy会根据pom.xml中配置的版本是否为快照版本发布到snapshots或release。 如<version>0.0.4-SNAPSHOT</version> 其中版本号含SNAPSHOT字样,将发布到snapshots快照库,否则发布到release发行库。发布的地址即为项目 pom.xml中配置的发布私服地址。
下面分析下mvn release:prepare以及mvn release:perform
在项目开发的过程中,经过开发测试已有一个稳定的版本时,我们就需要发布一个release正式版本,而不是snapshots快照版本。手工完成此过程大概如下: (若此时版本为0.0.4-SNAPSHOT)
1、修改版本为0.0.4正式版本,提交
2、执行mvn clean deploy发布将0.0.4版本发布到release发行库
3、将此0.0.4正式版本源码在svn上打一个tag
4、升级版本为0.0.5-SNAPSHOT,提交
如果项目数量不多或需要升级的依赖不多,手工操作也无妨;但若项目数量众多,依赖繁杂的话,就要借助工具帮忙简化发布流程了。
mvn release:prepare
此命令,需在pom.xml中配置scm代码库,配置maven-release-plugin插件自动打tag,执行此命令时会提示是否按默认的版本发布方式进行,
若需要变更版本规则(如升级次版本号),执行完成后项目目录下会生成pom.xml.releaseBackup及release.properties两个文件,其中有对应发布描述。
mvn release:perform
此命令完成最终发布
mvn release:prepare主要处理流程为将0.0.4-SNAPSHOT变更为0.0.4提交到版本库,再打个tag,完成后升级版本为0.0.5-SNAPSHOT。
mvn release:perform主要处理流程为根据上一步生成的配置release.properties从tag中获取源码checkout到target/checkout目录中,完成发布。
结束。