【问题标题】:How to run a Maven enforcer rule before the Maven release prepare changes the pom.xml?如何在 Maven 发布准备更改 pom.xml 之前运行 Maven 强制执行规则?
【发布时间】:2014-07-22 19:23:15
【问题描述】:

我创建了a custom Maven enforcer rule。此规则将检查<scm><connection> 值的内容,以确保它指向trunkbranches/*(即不是标签)。 这个执行器在pom.xml 中是这样配置的:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.3.1</version>
            <dependencies>
                <dependency>
                    <groupId>my.company</groupId>
                    <artifactId>maven-release-enforcer</artifactId>
                    <version>1.0.0</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>enforce-release-check</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <phase>validate</phase>
                    <configuration>
                        <rules>
                            <releaseCheck implementation="my.company.maven.release.enforcer.MavenReleaseEnforcer"/>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>

不幸的是,当我们将它与 Maven Release 插件一起使用时,后者插件在其 [在此处输入链接描述]prepare2 目标期间更改了 &lt;scm&gt;&lt;connection&gt; 值的内容,因此在执行器被有效调用之前.这会导致我的自定义规则失败,因为此时&lt;scm&gt;&lt;connection&gt; 指向一个标签。

所以我的问题是:有没有办法在 Maven 发布插件开始修改 pom.xml 之前强制调用执行器?

ps:Jenkins 作业分为 2 个步骤:mvn clean release:preparemvn release:perform

【问题讨论】:

    标签: java maven maven-release-plugin maven-enforcer-plugin


    【解决方案1】:

    当你打电话时

    mvn clean release:prepare
    

    只有clean 阶段和prepare 目标被执行。

    你可以使用

    mvn clean validate release:prepare
    

    包括validate 阶段或

    mvn clean maven-enforcer-plugin:enforce release:prepare
    

    只触发执行器插件

    【讨论】:

    • 你好。谢谢。请注意,第一个解决方案不起作用。实际上,强制执行器将被执行两次(一次用于validate 目标,一次用于release:prepare 目标),第二次将失败。第二个解决方案有效,但我想避免这种解决方案,因为它需要更改我所有的 Jenkins 作业(或者,如果我们忘记添加 org.apache.maven.plugins:maven-enforcer-plugin:enforce 目标,则不会执行强制规则)。
    • 您可以在验证阶段创建一个 Maven 配置文件,其中包括这两个目标(enforceprepare,最终甚至是 perform)。所以你可以释放mvn -Prelease verify
    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2021-09-22
    相关资源
    最近更新 更多