簡體   English   中英

Maven 執行器插件丟失或無效的規則

[英]Maven enforcer plugin missing or invalid rules

我正在嘗試為 maven 設置執行器插件以強制執行最低 Java 版本。 但是,每當我嘗試運行mvn enforcer:enforce ,我都會得到:

目標 org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce 的參數“規則”丟失或無效

這是我的 pom 文件的相關部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
        <execution>
            <id>enforce-java</id>
            <phase>validate</phase>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <requireJavaVersion>
                        <version>(1.7.0-20,)</version>
                    </requireJavaVersion>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

我也嘗試用<alwaysPass/>替換<requireJavaVersion>塊,以防某些東西無效,但它仍然因相同的錯誤而失敗。

可能是您使用了無效的規則名稱。 查看規則頁面。 規則名稱區分大小寫。 雖然這里不是這種情況。

- - 編輯 - -

請注意,POM 配置的執行 ID 為enforce-java並且該執行綁定到生命周期的validate階段。 命令mvn enforcer:enforce正在運行一個目標,而不是生命周期中的一個階段。 您在 POM 中提供的配置不適用於enforcer:enforce目標。

有兩種方法可以完成這項工作。 你選擇哪一個取決於你需要什么。

  1. 如果您只是嘗試在不運行整個構建的情況下測試執行器插件配置,請運行mvn validate
  2. 如果要求mvn enforcer:enforce起作用,則將執行 ID 更改為default-cli

我在嘗試構建 vertx Workshop 項目時遇到了這個完全相同的錯誤。 事實證明,該錯誤主要是與執行器插件版本相關的問題。 以下配置為我解決了這個問題。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>3.0.0-M3</version><!--$NO-MVN-MAN-VER$-->
  <executions>
    <execution>
      <id>enforce-java</id>
      <phase>enforce</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireJavaVersion>
            <version>(1.8.0,)</version>
          </requireJavaVersion>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

就我而言,問題是我將執行器配置放在 Maven 配置文件的構建部分中,當我運行mvn validate時該配置文件並未構建。 一個簡單的mvn validate -P correctProfile為我修復了它。 最后我把它放到一個多模塊應用的父項目中,將字節碼執行器規則的傳遞搜索設置為true: <searchTransitive>true</searchTransitive>並驗證了子項目中不正確的依賴確實會導致構建失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM