7

pom.xmlこれは、マルチモジュールプロジェクトの私の親(その一部)です。

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
…

この構成は、ルートプロジェクトすべてのサブモジュールでプラグインmvnを実行するように指示します。私はそれがこのように機能することを望んでいません。代わりに、このプラグインをルートプロジェクトに対してのみ実行し、すべてのサブモジュールに対してスキップする必要があります。同時に、私には多くのサブモジュールがあり、それらのすべてでプラグインの実行を明示的にスキップするという考えは好きではありません。checkstyle

Checkstyleのドキュメントに、 「..サブモジュールにMavenCheckstyleプラグインが含まれていないことを確認してください。..」と記載されています。しかし、サブモジュールがルートを継承していることをどのように確認できますpom.xmlか?私は道に迷っています、助けてください。

4

2 に答える 2

5

しかし、サブモジュールがルート pom.xml を継承するかどうかを確認するにはどうすればよいでしょうか?

この質問に厳密に答えるために、定義<inherited>内で要素を指定できます。POMリファレンス<plugin>から:

inherited: trueまたはfalse、このプラグイン構成を、このプラグイン構成を継承する POM に適用するかどうか。

このようなもの:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <!-- Lock down plugin version for build reproducibility -->
  <version>2.5</version>
  <inherited>true</inherited>
  <configuration>
    ...
  </configuration>
</plugin> 

その他のアドバイス/コメント (該当しない場合があります):

于 2010-08-05T14:33:59.130 に答える
2

おそらく、ルートpomを2つの別々のエンティティ(親pomとアグリゲーターpom)に分割する必要があります。アグリゲーターpomは、親pomから継承することもできます。

hibernateの最新のプロジェクトレイアウトをダウンロードすると、このデザインパターンが実際に動作していることがわかります。

この分離が完了したら、aggregator /rootpomでcheckstyleプラグインを定義して実行できます。サブモジュールの親ではなくなったため、サブモジュールに継承されません。

編集宣言するときに
使用します<relativePath><parent>

デモンストレーションのために、以下は休止状態のプロジェクト構造から抜粋した例です。
ディストリビューション全体はここにあります-> http://sourceforge.net/projects/hibernate/files/hibernate3

コンテキストがあるので、ここにそれらのディレクトリレイアウトのサブセットを示します

project-root
   |
   +-pom.xml
   |
   + parent
   |  |
   |  +-pom.xml
   |
   + core
      |
      +-pom.xml

   .. rest is scipped for brevity

project-root/pom.xmlフラグメント

<parent>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-parent</artifactId>
    <version>3.5.4-Final</version>
    <relativePath>parent/pom.xml</relativePath>
</parent>

<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<packaging>pom</packaging>

<name>Hibernate Core Aggregator</name>
<description>Aggregator of the Hibernate Core modules.</description>

<modules>
    <module>parent</module>
    <module>core</module>

project-root / parent/pom.xmlフラグメント

<groupId>org.hibernate</groupId>
<artifactId>hibernate-parent</artifactId>
<packaging>pom</packaging>
<version>3.5.4-Final</version>

project-root / core/pom.xmlフラグメント

<parent>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-parent</artifactId>
    <version>3.5.4-Final</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<packaging>jar</packaging>
于 2010-08-05T12:14:18.483 に答える