使用Maven Release插件发布项目

上一篇文章《使用Maven插件修改工程版本号》中提到修改maven工程的版本号,最终没有一个完美的解决方案,其实最终修改好版本号之后还是需要使用deploy命令发布到私有Maven服务器上面的,Maven Release插件可以自动执行整个的发布过程,主要包括:将当前的SNAPSHOT版本号修改为正式版,然后在SCM服务器(SVN或git)上打一个该版本的tag,编译程序并自动生成jar包、source源码包和javadoc文档包然后发布到指定的maven服务器上,最后将当前的版本号增加为新的版本号并修改为SNAPSHOT,这样就相当于一个自动构建的流程了。

不过为了能够正常实现上面的流程,还需要注意几个地方:
1. 需要在本地安装一个scm客户端,这里使用了svn客户端,windows下推荐下载Subversion for Windows,需要跟项目存放的svn server的版本一致,在http://sourceforge.net/projects/win32svn/files/中列出了各种版本的客户端。安装之后需要确定在命令行下面可以正常执行svn命令。

2. 确保可以执行mvn deploy命令,需要在maven的配置文件中设置发布服务器端的用户名和密码,并且其id需要与项目pom文件中定义的distributionManagement下面的repository(正式版)和snapshotRepository(测试版)中的id一致。

3. 在父工程的pom.xml文件中定义scm信息及配置release plugin插件:
./pom.xml中的关键信息



scm:svn:http://192.168.1.200/svn/framework/trunk

scm:svn:http://192.168.1.99/200/framework/trunk
http://192.168.1.99/svn/framework/trunk




nexus-releases
Local Nexus Repository
http://192.168.1.200:8080/content/repositories/releases


nexus-snapshots
Local Nexus Repository
http://192.168.1.200:8080/content/repositories/snapshots



org.apache.maven.plugins
maven-release-plugin
2.5.3

package deploy true http://192.168.1.99/svn/lingsee.framework/tags false .project .settings .classpath **\.project **\.settings **\.classpath 设置好之后可以执行mvn命令,命令列表如下:
release:clean 清除一些插件生成的相关文件
release:prepare 准备发布,相当于发布前的准备。此命令会首先去去掉版本号中的SNAPSHOT标志符,在svn服务器生成一个指定版本的tag,编译并打包项目
release:perform 正式发布提交
release:rollback 回滚,如果prepare的过程中出现了错误可以执行此命令回滚prepare的操作。有两点需要注意:一是在svn服务器上创建的tag无法删除;二是如果执行了release:clean命令的话,无法进行回滚

默认情况下Release插件会将源码和javadoc进行打包,如果想自己控制的话需要在插件的configuration中设置useReleaseProfile为false,这样跟直接使用mvn deploy进行项目发布的情况一致了。

参考资料:
Maven_Release_Plugin配置
Maven多模块项目每日构建
Maven Release Plugin deployment of sources.jar and javadoc.jar

发表评论

电子邮件地址不会被公开。 必填项已用*标注