提交前未调用完成目标

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

【讨论】:

以上是关于提交前未调用完成目标的主要内容,如果未能解决你的问题,请参考以下文章

在提交表单之前等待异步调用完成

没有调用目标 C 完成块

在目标 c 中调用 Swift 完成处理程序

在测试目标下未调用 MagicalRecord 完成块

从同一文件中的 HTML 表单调用 PHP 函数

使用Java和OpenCV调用YOLOv3完成实施目标检测