Mavenを使用したマルチモジュールプロジェクトは、予想どおりに機能していませんか?

StackOverflow https://stackoverflow.com/questions/3790987

質問

こんにちは私はM2Eclipseを使用してEclipseでマルチモジュールプロジェクトを作成しようとしています。私はいくつかのチュートリアルに従いましたが、それが機能する方法は私が期待するものではありません:

これが私のプロジェクトの構造です

  -Root
  -    webapps
  -          module1
  -          module2

ルートとモジュール用のpom.xmlがあります。 (モジュール1と2は互いに独立しています)pom.xml(root)、私は持っています

 <modules>
        <module>./webapps/module1</module>
        <module>./webapps/module2</module>
 </modules>

module1のpom.xml:

<parent>
        <groupId>{RootGroupId}</groupId>
        <artifactId>{RootArtifactId}</artifactId>
        <version>{RootVersionId}</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

モジュール2では、モジュール1に似ています。

ルートに移動してPOMファイルを実行すると、最初にルートフェーズとモジュールのフェーズが後でトリガーされます(ルートプロジェクトを構築し、モジュールプロジェクトを構築します)。私にとっては大丈夫です。

しかし、問題はmodule1に行ってpom.xmlを実行すると発生します。また、同じこともできます。ルートpom.xmlとmodule1のpom.xmlをトリガーします。私はこれが好きではありません。 What i want to be happened is ONLY the module1's pom file is triggered (Module1のみが構築されます)、rootのPOMはトリガーされません(ルートプロジェクトは構築されていません)。

どんな助けでも、お願いします。

役に立ちましたか?

解決

アップデート: 宣言されているPOMから継承するPOMでプラグイン構成を適用したくない場合は、設定します inheritedfalse.

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-1</version>
    <inherited>false</inherited> <!-- THIS SHOULD DO IT -->
    <executions>
      <execution>
        <id>read-project-properties</id>
        <phase>initialize</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
            <file>build.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>

参照


私は問題を再現しようとしました...しかし、成功しませんでした。同様のプロジェクト構造を作成しました。

$ tree .
.
├── pom.xml
└── webapps
    ├── module1
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           └── webapp
    │               ├── index.jsp
    │               └── WEB-INF
    │                   └── web.xml
    └── module2
        ├── pom.xml
        └── src
            └── main
                ├── resources
                └── webapp
                    ├── index.jsp
                    └── WEB-INF
                        └── web.xml

親pom.xmlが宣言する場所:

  <modules>
    <module>webapps/module1</module>
    <module>webapps/module2</module>
  </modules>

そして各子供:

  <parent>
    <artifactId>Q3790987</artifactId>
    <groupId>com.stackoverflow</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

ルートからの建物は、原子炉ビルドをトリガーします。

$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Q3790987
[INFO] module1 Maven Webapp
[INFO] module2 Maven Webapp
[INFO] 
[INFO] ------------------------------------------------------------------------
...

しかし、子供を構築することは親に何もトリガーされません。

$ cd webapps/module1/
$ mvn install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module1 Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...

すべてが私に期待どおりに機能します。


(最初の回答が削除されたように削除されたとき、私は質問を誤って解釈しました)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top