如何在两个多模块Maven项目的场景中编译单个模块

时间:2010-08-05 13:42:46

标签: java maven-2 build-process

如何在两个多模块Maven项目A和B的以下场景中编译单个模块。

两个项目都位于同一目录中,因此目录结构如下所示:

root
|-- A
|   |-- A1
|   |-- A2
|   `-- A3
`-- B
    |-- B1
    `-- B2

除root之外的所有目录都有自己的pom.xml文件,每个子模块都引用其父模块(A1有父A等),父目录引用其子模块(A有模块A1-A3)。我遇到的问题是 A1还取决于B1 ,因为项目B是我想在其他项目中使用的实用程序的集合。

我的问题是如何正确引用B1 ,以便我可以先构建A1 而无需先安装B1 。我的意思是我想使用一个maven命令构建具有所有依赖关系的A1。

我目前的解决方案是使B1成为A的模块(通过模块参考../B/B1)。然后我可以从目录A中调用mvn package,它工作正常。但是构建整个项目A有时非常耗时。因此我想只建立A1 + deps。我怎样才能做到这一点?当我从目录A调用mvn reactor:make -Dmake.folders=A1时,我收到以下构建错误:

Reason: Cannot find parent: B:B for project: B:B1:jar:1.0-SNAPSHOT for project B:B1:jar:1.0-SNAPSHOT

因此,当使用reactor插件时,maven似乎突然找不到B1的父模块了。有没有人知道这个或另一种方法的解决方案来引用另一个允许以上述方式构建A1的项目的子模块?

注意,我不想在root中设置包含模块A和B的超级模块,因为这个pom文件,因为每个检出A和B的用户可能在其根目录中也有其他项目,因此必须为root编写自己的pom文件。

1 个答案:

答案 0 :(得分:0)

简单地创建一个根pom,其中包含模块并在A和B中引用父进程然后它将起作用。否则它不起作用。