60

Mavenを使い始めたばかりで、プラグインは使用できる追加のコンポーネントであることを読みました。ファイル
の典型的な構造は次のとおりです。pom.xml

<project>
  <groupId>org.koshik.javabrains</groupId>
  <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>JarName</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

質問plugin:タグはどこに挿入すればよいですか?次のような:

<plugin>
  <groupId>org.jibx</groupId>
  <artifactId>jibx-maven-plugin</artifactId>
  <version>1.2.4</version>
  <executions>
    <execution>
      <goals>
        <goal>bind</goal>
      </goals>
    </execution>
  </executions>
</plugin>

依存関係の前またはdependencyタグの後?それは重要ですか?

4

7 に答える 7

68
<project>
    <groupId>org.koshik.javabrains</groupId>
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>JarName</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.jibx</groupId>
                <artifactId>jibx-maven-plugin</artifactId>
                <version>1.2.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>bind</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Mavenプロファイルを使用する場合の<build>セクションにプラグインを配置することもできます。<profile>順序は関係ありません。

于 2012-05-11T07:58:50.023 に答える
25

2つの重要な点についての遅い説明

配置する場所plugin
Aは、ほとんどの場合/セクションplugin内に追加する必要がありますが、/内に配置することと、/内に配置することには重要な違いがあります。buildpluginspluginspluginManagementplugins

この誤解は、多くの場合、Mavenで呼び出されないプラグインまたはより困難なトラブルシューティングの原因です。

  • build/の下のプラグインpluginsは、を指定する場合、またはデフォルトビルド用に何かを構成する場合、デフォルトのMavenビルドの直接の一部ですexecution(以下を参照)
  • build//の下のプラグインpluginManagementplugins、必ずしもデフォルトのMavenビルドの一部ではありません。つまり、管理です。これは、Mavenへのヒントです。このプラグインを使用する場合は、ここで指定するバージョン、構成、実行を使用してください。この管理で。

    しかし、どういう意味で使うのでしょうか?意味:同じプラグインが/セクションに存在する場合は、この管理を適用します(その場合にのみ有効になります)。または、プラグインがデフォルトでMavenによって呼び出される場合は、それも適用します。 buildplugins

    しかし、プラグインはデフォルトでどのように呼び出されますか?これは、Mavenの背後にある主要な哲学の一部です。設定より規約です。慣例により、特定のプラグインを指定する場合packaging(デフォルトですjarが、たとえば、これも可能warです)、特定のプラグインを呼び出す必要があります。を構築するjarには、デフォルトmaven-jar-pluginで;を呼び出します。を構築するwarには、デフォルトで、などを呼び出しますmaven-war-plugin。したがって、Mavenビルドへのデフォルトのバインディングを持つプラグインのプラグイン構成を//で指定するとbuild、それも使用されます。pluginManagementplugin

順序付けファイル
内のセクションの順序付けに関しては、さらに明確にする必要があります。ほとんどの場合、実際には関係ありませんが、 /セクション内の要素の順序が重要になる場合があります。Maven 3.0.3()以降、同じMavenフェーズにアタッチされた異なるプラグイン実行が、ファイル内の宣言順に呼び出されます。つまり、この場合、ビルドの動作に影響を与える可能性があるため、順序付けは重要です。pom.xmlpluginbuildpluginsMNG-2258pom.xml

さらに、dependency宣言の順序も依存関係メディエーションに向けたビルドに影響を与える可能性があります。つまり、推移的な依存関係と競合する場合は、最初に宣言された依存関係が優先されます。したがって、ここでも、特定の場合に順序付けが重要になります。

最後になりましたが、ファイルの他のセクションでは順序は重要ではありませんが、Mavenpom.xmlの公式の推奨事項に従い、簡略化されたバージョンとして、次の宣言の順序に従うことをお勧めします。

<project>
  <modelVersion/>

  <parent/>

  <groupId/>
  <artifactId/>
  <version/>
  <packaging/>

  <properties/>

  <dependencyManagement/>
  <dependencies/>

  <build/>

  <reporting/>

  <profiles/>
</project>

を使用して、このsortpom-maven-plugin標準の順序を自動的に適用することもできます。関連pom.xmlするファイルで次のコマンドを呼び出すだけです。

mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \
     -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06 

さらに読むために

于 2016-06-15T11:32:17.680 に答える
5

<plugin>またはセクション<plugins>に配置する必要があるセクションに配置する必要があります。またはセクションの順序は重要ではありません。<build><pluginManagement><dependency><build>

pom.xmlに関する完全なリファレンスはここにあります:http://maven.apache.org/pom.html

于 2012-05-11T07:55:25.877 に答える
4

ビルドにプラグインを使用する場合は、以下の構造を使用できます。

<project>
 <build>
  <plugins>
  </plugins>
 </build>
</project>
于 2012-05-11T07:57:44.290 に答える
2

<plugins> </plugins>2番目のスニペットはpom.xmlファイルの2つのタグの間のどこにでも挿入できます。

于 2012-05-11T07:54:06.533 に答える
2

POMでのセクションの順序は重要ではありません。一般に、Mavenにはビルドプラグインとレポートプラグインがあります。あなたのケースはビルドプラグインを使用することなので、この<plugin>ブロックを<project><build><plugins>...セクションに配置する必要があります。

プラグインに関するいくつかの基本については、これを見てください。

于 2012-05-11T07:58:34.053 に答える
0

レポートプラグイン(例:maven-checkstyle-plugin)の追加の回答として、ビルドとレポートの下で、プラグインをpom.xmlに入れることができる2つのタグがあります。

レポートタグVSビルドタグの使用

pomのまたは要素でレポートプラグインを構成しても、同じ動作はありません。

mvnサイト

要素で指定された各レポートプラグインの要素で定義されたパラメーターのみを使用します。つまり、サイトは、で指定された各プラグインの要素で定義されたパラメーターを常に無視します。

mvn aplugin:areportgoal

最初に、要素で指定された各レポートプラグインの要素で定義されたパラメーターを使用します。パラメータが見つからない場合は、で指定された各プラグインの要素で定義されたパラメータを検索します。

ソース:https ://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_reporting_Tag_VS_build_Tag

于 2020-02-13T06:58:13.297 に答える