15

Maven 3を強制するための2つの主なアプローチは次のようです。

  • maven-enforcer-plugin、および
  • pom.xml<prerequisites>要素。

使用するための最良のアプローチは、いくつかの異なる要因に依存するようです。この質問は、どのアプローチが自分にとって最も理にかなっているかを人々が判断するのを助けるためのものです。

質問: どのタイプのプロジェクト構造が maven-enforcer-plugin に最適であり、どのタイプのプロジェクト構造が pom 前提条件に最も適していますか?


Maven Enforcer プラグインの例

<build>
  <plugins>
    <plugin>
      <inherited>true</inherited>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.3</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>

Maven POM 前提条件の例

<project>
   ...
   <prerequisites>
       <maven>3.0.5</maven>
   </prerequisites>
   ...
</project>
4

2 に答える 2

15

前提条件は非推奨であり、enforcer プラグインを使用する必要があります。MNG-5297は、これを明確にするためにドキュメントの更新を要求しています。

maven-enforcer-pluginFAQは違いを説明しています

pom で前提条件タグを使用できないのはなぜですか?

前提条件タグは、プラグインなどのツールで使用するように設計されています。通常のプロジェクトでは機能しますが、その子には継承されません。親リアクターに設定されている場合、Maven はチェックを行います。ただし、子の 1 つが構築されている場合、チェックは実行されません。エンフォーサー プラグインは、ビルド環境を単一の "super-pom" から一元的に制御できるように設計されており、範囲をサポートすることでバージョン指定の柔軟性を高めます。

さらに、前提条件は Maven 3 では機能しないことに注意してください。

于 2013-08-05T12:48:06.010 に答える
2

Mavenpom prerequisitesアプローチは、小規模で単純なプロジェクトに適している場合があります。このアプローチは、ダウンロードする必要がないため、軽量maven-enforcer-pluginになります。

maven-enforcer-plugin親からmaven 3要件を継承したい子プロジェクトがある場合、 このアプローチがより適している可能性があります。pom prerequisites子プロジェクトには継承されません。

于 2013-08-05T09:41:35.437 に答える