繁体   English   中英

如何在多模块 maven 项目的子模块中禁用某些强制执行规则?

[英]How to disable certain enforcer rules in a child module in a multi-module maven project?

我在多模块 maven 项目中使用 maven-enforcer 插件。 假设我的项目结构如下

main
  - query
  - storage

我在main pom 中的执行器插件如下所示

<build>
<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <DependencyConvergence/>
                                <requireJavaVersion>
                                    <version>[1.8,)</version>
                                    <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message>
                                </requireJavaVersion>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
</builds>

在子模块( query )中,如果我需要禁用其中一个强制执行规则(比如说DependencyConvergence ),有人可以告诉我如何做到这一点吗?

Maven 版本 - 3.6.1

AFAIK 您不能禁用单个强制执行规则。

您可以将enforcer.skip设置为true - 这会禁用所有强制执行规则。

我在类似情况下所做的事情:

我已经定义了我自己的执行者规则,它继承自“官方”执行者规则。 该实施者规则包含一个禁用它的开关。

这也在maven 邮件列表中得到解答。

因此,如果所有配置都通过 pluginMangement 部分管理,则类似于以下内容;

 <build><pluginManagement><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>alpha</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <DependencyConvergence/> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>bravo</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>alpha</id> <phase>validate</phase> </execution> </executions> </plugin> </plugins></builds>

query/pom.xml

 <build><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>alpha</id> <phase></phase> </execution> <execution> <id>bravo</id> <phase>validate</phase> </execution> </executions> </plugin> </executions> </plugin> </plugins></builds>

你也可以通过一个属性来做到这一点,并在查询中定义 bravo 执行而不是 alpha。 我在 maven-surefire-plugin 中使用了类似的技术,在其中我使用属性定义插件版本并在根/父 pom 中具有默认值,并且在一个特定的子 pom 中我定义了不同的肯定版本。 所以这可能有效......

 <build><pluginManagement><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>alpha</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <DependencyConvergence/> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>bravo</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>${which-enforcer-id}</id> <phase>validate</phase> </execution> </executions> </plugin> </plugins></builds> <properties> <which-enforcer-id>alpha</which-enforcer-id> </properties>

query/pom.xml

 <properties> <which-enforcer-id>bravo</which-enforcer-id> </properties>

约翰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM