Eclipse 使用maven的多模块项目未按预期工作?
嗨 我正在尝试使用m2eclipse在eclipse中创建一个多模块项目。我学习了一些教程,但它的工作方式并不是我所期望的: 这是我的项目结构Eclipse 使用maven的多模块项目未按预期工作?,eclipse,maven-2,project,m2eclipse,multi-module,Eclipse,Maven 2,Project,M2eclipse,Multi Module,嗨 我正在尝试使用m2eclipse在eclipse中创建一个多模块项目。我学习了一些教程,但它的工作方式并不是我所期望的: 这是我的项目结构 -Root - webapps - module1 - module2 我有根和模块的pom.xml。(模块1和模块2相互独立) 在pom.xml(Root)中,我有 /网络应用程序/模块1 /网络应用程序/模块2 在module1的pom.xml中: <parent>
-Root
- webapps
- module1
- module2
我有根和模块的pom.xml。(模块1和模块2相互独立)
在pom.xml(Root)中,我有
/网络应用程序/模块1
/网络应用程序/模块2
在module1的pom.xml中:
<parent>
<groupId>{RootGroupId}</groupId>
<artifactId>{RootArtifactId}</artifactId>
<version>{RootVersionId}</version>
<relativePath>../../pom.xml</relativePath>
</parent>
{RootGroupId}
{RootArtifactId}
{RootVersionId}
../../pom.xml
在模块2中,它类似于模块1
当我转到Root并运行pom文件时,它将首先触发Root的阶段,然后触发模块的阶段(构建Root项目,同时构建模块项目)。对我来说很好
但是当我转到module1并运行pom.xml时,问题就出现了。然后它也会这样做:触发根pom.xml和module1的pom.xml。我不喜欢这个<代码>我想发生的是,只有module1的pom文件被触发(只有module1被生成),root的pom将不会被触发(root项目未被生成)
请提供任何帮助。更新:如果您不想在从声明位置的POM继承的POM中应用插件配置,请将
继承的设置为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>
org.codehaus.mojo
我试图重现这个问题。。。但是没有成功。我创建了一个类似的项目结构:
$ 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
$tree。
.
├── pom.xml
└── 网络应用
├── 模块1
│ ├── pom.xml
│ └── src
│ └── 主要的
│ └── 网络应用
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── 模2
├── pom.xml
└── src
└── 主要的
├── 资源
└── 网络应用
├── index.jsp
└── WEB-INF
└── web.xml
其中,父pom.xml声明:
<modules>
<module>webapps/module1</module>
<module>webapps/module2</module>
</modules>
网络应用/模块1
网络应用/模块2
每个孩子:
<parent>
<artifactId>Q3790987</artifactId>
<groupId>com.stackoverflow</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
Q3790987
com.stackoverflow
1.0-快照
../../pom.xml
从根目录构建会触发反应堆构建:
$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Q3790987
[INFO] module1 Maven Webapp
[INFO] module2 Maven Webapp
[INFO]
[INFO] ------------------------------------------------------------------------
...
$mvn安装
[信息]正在扫描项目。。。
[信息]------------------------------------------------------------------------
[信息]反应堆建造顺序:
[信息]
[信息]Q3790987
[信息]模块1 Maven Webapp
[信息]模块2 Maven Webapp
[信息]
[信息]------------------------------------------------------------------------
...
但构建子对象不会触发父对象上的任何事件:
$ cd webapps/module1/
$ mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building module1 Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
$cd webapps/模块1/
$mvn安装
[信息]正在扫描项目。。。
[信息]
[信息]------------------------------------------------------------------------
[信息]构建模块1 Maven Webapp 1.0-SNAPSHOT
[信息]------------------------------------------------------------------------
...
对我来说,一切都如期进行
(最初的答案被删除了,因为我似乎误解了这个问题)很抱歉,我使用{RootGroupId},{artifactId}只是为了简单。在真正的Pom文件中,我当然硬编码了它。Pom运行正常,没有错误。唯一的问题是它没有像我期望的那样工作。谢谢帕斯卡。这里是下载我的项目的链接(仅7KB),请看一下:。基本上,在父pom文件中,我有一个插件来读取build.properties文件,它将在初始化阶段触发。但是当我转到module1并运行mvn initialize时,它也会触发读取属性文件的过程。你太好了,你应该接受一些答案(在答案的投票点下方打勾)
$ cd webapps/module1/
$ mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building module1 Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...