提交前未调用完成目标
Posted
技术标签:
【中文标题】提交前未调用完成目标【英文标题】:Completion Goals Not Called Before Commit 【发布时间】:2015-07-13 07:26:18 【问题描述】:我已将自己的 Maven 插件添加到构建过程中,如下所示:
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>...</tagBase>
<preparationGoals>clean verify org.acme:my-super-cool-plugin:the-goal</preparationGoals>
<completionGoals>org.acme:my-super-cool-plugin:the-goal"</completionGoals>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.acme</groupId>
<artifactId>my-super-cool-plugin</artifactId>
<version>1.2.3</version>
<executions>
<execution>
<id>my-super-cool-id</id>
<phase>validate</phase>
<goals>
<goal>the-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
现在documentation 声明completionGoals
被称为“在转换回下一个开发版本之后但在提交之前”,但是在发布后我看到我的插件所做的更改仅作为本地更改,它们没有被提交.
我已经通过将scm:checkin
添加到completionGoals
标记来“修复”它,但我想知道为什么它不是自己提交的。可能是因为它是 Tycho 项目,并且搞砸了 Maven 生命周期?
【问题讨论】:
正如您所提到的,文档准确地说明了它是如何工作的。如果您期望有所不同,我建议为它创建JIRA。除此之外,您是否使用了正确的 maven-release-plugin 版本? @khmarbaise 不,我希望它完全按照文档所述工作,但completionGoals
显然是在提交之后称为,而不是之前所述。我正在使用 2.5.1,这是新的(ish)。
2.5.1 是旧版本。 2.5.2 是最新的。在这种情况下,我建议提交 JIRA 问题...
@khmarbaise 同样的问题在2.5.2中依然存在。
好的。然后请提交 JIRA 票证...加上一个示例项目。
【参考方案1】:
documentation 实际上在另一个页面上声明只有 pom.xml 被提交,所以我发布的链接只是误导,并非完全错误。
【讨论】:
【参考方案2】:感谢这个问题和这个问题Maven Release plugin: Running specific preparationGoals & completionGoals in some modules of a project,我们能够按照我们想要的方式构建我们的发布过程——我们需要的只是一个额外的构建号被添加到 pom.xml。
所以我们创建了一个这样的插件执行:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<executions>
<execution>
<id>set-new-build-number</id>
<phase>none</phase>
<goals>
<goal>set-property</goal>
</goals>
<configuration>
<property>our.build.number</property>
<newVersion>$newBuildNumber</newVersion>
</configuration>
</execution>
</executions>
</plugin>
然后我们在maven-release-plugin中引用执行
<completionGoals>versions:set-property@set-new-build-number</completionGoals>
在递增到下一个 SNAPSHOT 版本之后,但在创建提交“准备下一次开发迭代”之前自动更改 pom
【讨论】:
以上是关于提交前未调用完成目标的主要内容,如果未能解决你的问题,请参考以下文章