上一篇文章《使用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中的关键信息
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