如何在Maven发布准备之前运行Maven enforcer规则更改pom.xml?

时间:2014-07-22 11:15:52

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

我创建了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插件一起使用时,后一个插件会在[此处输入链接描述] <scm><connection> 2目标期间更改prepare值的内容,因此在有效地调用执行者之前。这导致我的自定义规则失败,因为<scm><connection>此时指向了标记。

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

ps:Jenkins工作分为两个步骤:mvn clean release:preparemvn release:perform

1 个答案:

答案 0 :(得分:2)

致电

mvn clean release:prepare

仅执行clean阶段和prepare目标。

您可以使用

mvn clean validate release:prepare

包含validate阶段或

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

只是触发执法者插件