Mavenを使用したマルチモジュールプロジェクトは、予想どおりに機能していませんか?
-
05-10-2019 - |
質問
こんにちは私は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でプラグイン構成を適用したくない場合は、設定します inherited
に false
.
<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>
参照
- Maven POMリファレンス
私は問題を再現しようとしました...しかし、成功しませんでした。同様のプロジェクト構造を作成しました。
$ 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] ------------------------------------------------------------------------ ...
すべてが私に期待どおりに機能します。
(最初の回答が削除されたように削除されたとき、私は質問を誤って解釈しました)