【问题标题】:How to disable certain enforcer rules in a child module in a multi-module maven project?如何在多模块 Maven 项目的子模块中禁用某些强制执行规则?
【发布时间】:2020-08-12 12:42:24
【问题描述】:

我在多模块 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

【问题讨论】:

    标签: java maven java-8 maven-3 maven-enforcer-plugin


    【解决方案1】:

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

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

    我在类似情况下做了什么:

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

    【讨论】:

    【解决方案2】:

    maven mailing list 也回答了这个问题。

    如果所有配置都通过 插件管理部分;

    <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>
    

    你也可以通过一个属性来做到这一点,并在查询中定义 布拉沃执行而不是阿尔法。我使用了类似的技术 使用 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>
    

    约翰

    【讨论】:

      猜你喜欢
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多