私は現在、Maven を使用し、NetBeans IDE を使用して POM の問題を「デバッグ」する Java プロジェクトのクリーンアップを行っています。IDE で Maven バージョンとして Maven 3.0.4 を設定しましたが、他の開発者または継続的統合システムが異なる設定をしている可能性があります。
特定の Maven バージョンを POM で直接「強制」することは可能ですか (たとえば、Maven 3 固有の要素を使用して)?
はい、できますし、すべきです。一部の Maven プラグインには、Maven 3 以降が必要です。
に以下を追加して、maven-enforcer-plugin を使用しますpom.xml
。
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-maven-3</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.0.5</version>
</requireMavenVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
もう 1 つのオプションは、pom で Prerequisites 要素を使用することです。次に例を示します。
<project>
...
<prerequisites>
<maven>3.0.0</maven>
</prerequisites>
...
</project>
Michal Kalinowski's answer に記載されているように、この単純なアプローチは、子供のプロジェクトではうまく機能しません。
どのアプローチが最適かの概要については、こちらを参照してください: enforcing maven 3 - when to use maven enforcer plugin? pomの前提条件要素をいつ使用するのですか?
あなたができる最善のことは、Enforcer プラグインを使用することです。例を次に示します:
http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
Maven 自体には、これを行うためのすぐに使える方法はありません。実際にprerequisites
タグはありますが、子が継承しないためうまく動作しません。