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>
何かが無効な場合に備えて、<requireJavaVersion>
ブロックを<alwaysPass/>
に置き換えてみましたが、それでも同じエラーで失敗しました。
無効なルール名を使用している可能性があります。 rules ページを確認してください。ルール名では大文字と小文字が区別されます。ここではそうではありませんが。
----編集----
POM構成の実行IDはenforce-Java
であり、その実行はライフサイクルのvalidate
フェーズにバインドされていることに注意してください。コマンドmvn enforcer:enforce
は、ライフサイクルのフェーズではなく、目標を実行しています。 POMで指定した構成は、enforcer:enforce
目標には適用されません。
これを機能させるには2つの方法があります。どちらを選択するかは、必要なものによって異なります。
mvn validate
を実行します。mvn enforcer:enforce
が機能することが要件である場合は、実行IDをdefault-cli
に変更します。Vertxワークショッププロジェクトをビルドしようとしたときに、このまったく同じエラーが発生しました。結局のところ、エラーは主にエンフォーサプラグインのバージョンに関連する問題です。この次の構成は私のためにそれを解決しました。
<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>