4

のセクションではなく、セクション内でのみ<dependencies>a<plugin>を定義できるのはなぜですか?<build><reporting>pom

  • mavenpom.xml構文で が許可さ<dependencies>れないのはなぜ<reporting>ですか?
    • <reporting>ユーザーがプラグインのみを構成し、依存関係のバージョンも設定したい場合はどうなりますか?
  • セクション<build>のプラグインで依存関係情報がどのように/なぜ使用されるのですか?<reporting>

見つけたドキュメントでは、質問に答えなかった理由を以下に説明します (ドキュメントからの混乱が、実際にここでこの質問をしている理由です!)。

私が読んだり、観察したり、試したりしたことから、私の現在の理解は次のとおりです。

スクリプトのセクション内のプラグインは、<build>デフォルトの依存関係情報を上書きできます。これは、<reporting>セクション内のプラグインの依存関係に影響します。したがって、プラグインの依存関係情報はセクションにある必要はなく、<reporting>セクションにあるだけ<build>です。

これは正しいです?これを明確にするドキュメントにスポットはありますか? <build>との<reporting>プラグイン構成の関係を正しく理解するために不足している詳細は何<dependencies>ですか?

Mavenのドキュメントから

それはMavenのドキュメントUsing the Reporting vs the Build Tagに書かれています:

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

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

ドキュメンテーションでは、 は と の間で<configuration>共有されないと明示的に述べていますが、私の質問は、とでのみ宣言される方法/理由についてです。<build><reporting><dependencies><build><reporting>

で指定された依存関係<build> <reporting>プラグインに引き継がれるようです。しかし、これは確認/説明が欲しい点です。

最小限の例

で使用するために実行時に CheckStyle プラグインの依存関係をアップグレードするこの質問に遭遇したmvn siteため、この最小限の例の POM は、例として Checkstyle プラグインの問題を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>mylib</artifactId>
  <version>1.0</version>

  <build> 
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>3.0.0</version>
            <dependencies>
                <dependency>
                    <groupId>com.puppycrawl.tools</groupId>
                    <artifactId>checkstyle</artifactId>
                    <version>8.15</version> <!-- Update from default 6.18 to 8.15 -->
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.0.0</version>

        <!-- Uncommenting will cause syntax error, Dependencies can't be declared in reporting -->
        <!-- <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.15</version>
          </dependency>
        </dependencies> --> 

      </plugin>
    </plugins>
  </reporting>
</project>
4

1 に答える 1