最近会改组内一些公共jar
包,为了不影响已发布的 jar
包,增加新功能时需要发布新版本的 jar
包。之前没搞过这一块,最近遇到就总结下操作流程。
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。
传统的web
项目一般会有一个api
模块,用于发布对外的RPC
接口,如Dubbo
。这个时候一般通过发布jar
包,提供maven
坐标的方式,让别人引入你的依赖。这个时候可以直接通过maven deploy
命令直接发布快照版本到私服。
像IDEA
这种集成环境,可以通过简单的点击直接发布。
同时需要注意,maven
基于 POM
文件中的 version
来确定你将要发布的 SNAPSHOT
还是 release
。所以不能瞎命名,容易把不稳定的 jar
包发布到 release
仓库。
比较复杂的是通过 mvn release:prepare
和 mvn release:perform
来发布,这种发布会自动升级版本,不用手动维护POM
文件中的version
版本。
下面的流程我就直接摘抄组内大佬写的 wiki
:
要清楚本地tag和远程tag
# 列出本地tag
git tag
# 删除V0.1.2标签
git tag -d v0.1.2
# 删除远程标签protobuf-2.5.0rc1
git push origin :refs/tags/protobuf-2.5.0rc1
更多操作可以参见网络资料
mvn clean install -Dmaven.test.skip=true
,否则会导致发版失败,而且有效性只有一次,修改代码后需要重新执行该命令。mvn release:prepare -Darguments="-DskipTests"
预准备mvn release:perform -Darguments="-DskipTests"
发布mvn release:rollback -Darguments="-DskipTests"
回滚命令关于上面三条命令的更详细解释:
release:prepare这条命令主要是做打包前的准备:
在准备过程中还会run 单元测试等phase,如果没有异常的话可以继续最后一步。如果git还没有commit或单元测试失败会导致prepare失败,这时候你就需要到下面一个命令了。
release:rollback
如果在准备阶段发生错误,或者需要修改某些地方的话。就需要到这个命令了,这个命令执行以后会做以下这些事
git
库tag
,但是本地库tag
没有被删除,需要手动使用git tag -d XXX
进行删除。如果不将本地库中的tag
删除将会导致prepare
失败。pom.xml
统一目录下的配置release:perform
如果确认无误了以后,就可以执行perform命令了。这个命令干了以下这些事:
恭喜,你已经把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同时你会发现你的pom.xml文件会自动的变成1.1-SNAPSHOT版本。虽然这一系列操作都可以通过手动完成。但是有这个工具的存在,免去了很多步骤。
实际发包过程中,会遇到一些报错,这个时候通过执行 rollback
外加删除远程和本地的 tag
基本可以解决问题。
原文:https://www.cnblogs.com/aibilim/p/b4b9fa83feec9e22175a27c24c23ac24.html