如何通过Maven构建参数构建子模块的子模块

8
这是我的项目结构:
 ├── module_1
     ├── sub_module
          ├── module_11
          ├── module_12
          ├── module_13
 ├── module_2

现在,如果我使用以下命令构建它:
$~ mvn package -pl sub_module

它只会构建子模块,而不会构建其子模块。

构建module_11/module_12/module_13的唯一方法是明确指定如下:

$~ mvn package -pl sub_module,sub_module/module_11,sub_module/module_12,sub_module/module_13

这对我来说很不方便,想知道是否有更简单的方法处理这个问题?

如果子模块的pom.xml文件中包含一个module_1x列表的module部分,应该构建这些模块。 - VonC
我在 sub_module 的 pom.xml 中有这个,但它仍然只构建 sub_module,而不是它的子模块。 - zjffdu
2个回答

10

检查是否添加 -am-amd 选项有所帮助

mvn clean package -pl sub_module -am
mvn clean package -pl sub_module -amd  <== (confirmed by the OP)

请参见Maven技巧和诀窍:高级反应堆选项

-am, --also-make
如果指定了项目列表,则还要构建所需的项目。
-amd, --also-make-dependents
如果指定了项目列表,则还要构建依赖于列表中项目的项目。

2
虽然它对我来说可行,但并不完美。--amd 还将构建依赖于此子模块的其他项目,但我想要的是在此子模块下构建所有子模块。 - zjffdu
即使它对于OP“有效”,它也没有回答问题,因为它提供了一种构建依赖于“子模块”子级别的所有内容的方法,而不仅仅是这些“子模块”子级别。我也在寻找解决方案。 - lpratlong

1

我有两个可能适用的临时解决方案:

使用-f参数在特定的pom文件上运行构建:

$ mvn package -f module_1/submodule

或者进入所需模块并简单构建:

cd
$ pwd
/module_1
$ cd submodule
$ mvn package

然而,它在跨目录移动时需要更多的努力。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接