[英]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
目標。
有兩種方法可以完成這項工作。 你選擇哪一個取決於你需要什么。
mvn validate
。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.