β

使用Maven Release插件发布项目

Java堂 263 阅读

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

  1. <project>
  2. <!-- SCM信息 -->
  3. <scm>
  4. <!-- 只读的scm连接 -->
  5. <connection>scm:svn:http://192.168.1.200/svn/framework/trunk</connection>
  6. <!-- 可写的scm连接 -->
  7. <developerConnection>scm:svn:http://192.168.1.99/200/framework/trunk</developerConnection>
  8. <url>http://192.168.1.99/svn/framework/trunk</url>
  9. </scm>
  10. <!-- 设定团队Maven服务器  -->
  11. <distributionManagement>
  12. <repository>
  13. <id>nexus-releases</id>
  14. <name>Local Nexus Repository</name>
  15. <url>http://192.168.1.200:8080/content/repositories/releases</url>
  16. </repository>
  17. <snapshotRepository>
  18. <id>nexus-snapshots</id>
  19. <name>Local Nexus Repository</name>
  20. <url>http://192.168.1.200:8080/content/repositories/snapshots</url>
  21. </snapshotRepository>
  22. </distributionManagement>
  23. <!-- 编译配置 -->
  24. <build>
  25. <!-- 插件 -->
  26. <plugins>
  27. <!-- 发布插件 -->
  28. <plugin>
  29. <groupId>org.apache.maven.plugins</groupId>
  30. <artifactId>maven-release-plugin</artifactId>
  31. <version>2.5.3</version>
  32. <configuration>
  33. <preparationGoals>package deploy</preparationGoals>
  34. <autoVersionSubmodules>true</autoVersionSubmodules>
  35. <!--  项目打 tag 的 scm 路径配置信息 -->
  36. <tagBase>http://192.168.1.99/svn/lingsee.framework/tags</tagBase>
  37. <!-- 不使用默认的profile -->
  38. <useReleaseProfile>false</useReleaseProfile>
  39. <!--  在发布时不检查是否提交 svn 的文件过滤配置 -->
  40. <checkModificationExcludes>
  41. <checkModificationExclude>.project</checkModificationExclude>
  42. <checkModificationExclude>.settings</checkModificationExclude>
  43. <checkModificationExclude>.classpath</checkModificationExclude>
  44. <checkModificationExclude>**\.project</checkModificationExclude>
  45. <checkModificationExclude>**\.settings</checkModificationExclude>
  46. <checkModificationExclude>**\.classpath</checkModificationExclude>
  47. </checkModificationExcludes>
  48. </configuration>
  49. </plugin>
  50. </plugins>
  51. </build>
  52. </project>

设置好之后可以执行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

Related Posts:

作者:Java堂
荣辱不惊闲看庭前花开花谢,去留无意漫随天外云卷云舒。——马寅初
原文地址:使用Maven Release插件发布项目, 感谢原作者分享。

发表评论