我有一个maven项目,有很多模块(和模块内的模块)。我正在使用maven释放插件来控制pom.xml文件中的版本。
当运行命令mvn释放:准备
plugin时,会相应地推送两个带有消息的提交:“[maven-释放-插件]准备发布v0.9.0.38”和“[maven-释放-插件]准备下一次开发迭代”。这里的第二个只是快照版本。
以下是maven release插件设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<autoVersionSubmodules>true</autoVersionSubmodules>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
<checkModificationExclude>*/pom.xml</checkModificationExclude>
</checkModificationExcludes>
<branchBase>master</branchBase>
</configuration>
</plugin>
</plugins>
</build>
推送时,我也将标签设置为远程git项目(您可以在中看到它)
编辑:
当我在每次提交时通过运行mvn release:prepare来增加项目的次要版本时
例如,提交如下所示:
[maven-Relase-plugin]准备下一个开发迭代
[maven-Relase-plugin]准备发布v0.9.0.38
(重构)代码清理
[maven-Relase-plugin]准备下一个开发迭代
[maven-Relase-plugin]准备发布v0.9.0.37
(功能)添加I18N支持
这看起来很难看,而且在每次更改时强制执行三次提交是非常糟糕的解决方案,只需不手动地增加pom文件的次要版本即可。
每次提交增量项目版本(包括所有模块)之前
我如何才能实现这一点?
要仅更新版本,您可以使用发布:update-version
,然后手动提交。
文档中还列出了发布:准备的suppressCommitBeforeTag选项,听起来应该可以防止提交。
描述的行为是有意的——插件在发布模块后增加它们的版本,这是正常的。所以主要建议是在自定义之前三思而后行。
如果您使用的是Git,可以将pushChanges设置为false以避免推送。之后,您可以回滚上次提交并推送更改
git reset HEAD~ --hard
git push origin master
如果你解释一下为什么你认为第二次提交是多余的,建议会更实用。
此外,如果您不确定是否有更改,则始终可以使用dryRun开关。
更新时间:
这些步骤可以很容易地聚合到脚本文件中,以避免弄虚作假。
作为替代方案,您可以查看BuildNumber maven插件,它也很有用。
问题内容: 我正在 Jenkins 内部使用M2发行插件,该 插件 内部调用了 maven-release-plugin 2.3.2 ,而在构建时抛出此错误: 。问题是,我的项目poms 的版本 确实 是1.0.0-SNAPSHOT。我想念什么? 是,而我只是为了 是的,我已经完成了基本的Google + SO拖网,并且到处都指出我的POM应该使用SNAPSHOT作为版本,而该版本已经存在。除了我
所有POM都有作为它们的版本,也在dependencies标签下。它通过上传到Nexus repo。 我们最近开始做。因此,所有20个父POM现在都是和版本,因为它们都位于nexus中。所有标记现在都指向 开发人员不想指向发布版本。他们需要来自同行的edge开发版本,不管它是否不稳定。 SCM只希望指向版本,因为他必须每周执行一次,但由于指向快照版本而失败。 现在我知道了版本插件,但问题是,我应该
我们在maven发行版和maven版本插件上有一个问题。在詹金斯,我们想做释放自动按下一个按钮。为了消除快照依赖关系,我们希望使用maven versions插件。假设我们有两个项目A(最新版本0.0.1,最新快照0.0.2-快照)和项目B,它们依赖于Projecta-0.0.2-快照,我们希望发布项目B,我们如何将项目Bs依赖项升级到最新可用的发布版本?maven versions插件目标“us
我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(
我正在为iOS开发一个框架,我想使用哨兵进行崩溃报告。我想只发送与我的框架相关的崩溃事件,而不是主机应用程序中发生的所有崩溃。有没有办法防止事件从被交付或发送到哨兵iOSsdk哨兵(假设我有过滤一些事件的解决方案)?
我正在使用Maven发布插件,我正在尝试发布。当我在master上(我使用Git)时,我的项目(多模块)和依赖项(也是多模块)都有SNAPSHOT版本。 假设我想从没有使用快照的master创建一个标记(跳过创建分支)。 这是我的简化pom。xml: 如果我这样做: mvn版本:prepare-Darguments=“-dependency1.version=1.2.3.0-Ddependency