You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Maven构建父模块下的所有嵌套子模块?

Maven三层结构下仅构建指定父模块子模块的解决办法

模块结构

grandparent -> parent -> child1
      \               -> child2
       \
        --> child3
        --> child4

问题

我要构建parent下的所有子模块(也就是child1和child2),试了mvn install --projects ":parent",结果只建了parent本身,没管它的子模块。直接跑mvn install会把所有模块都建了,不符合需求。现在只能手动枚举子模块:

mvn install --projects ":parent,:child1,:child2"

这个情况和常见的两层模块问题不一样:

  1. 这里是三层父项目结构
  2. 用-am参数的话,因为child2依赖child3,会连带把child3也建了,超出我要的范围

解决方法

如果你用的是Maven 3.3.0及以上版本,直接用--include-child-modules(简写-plm)参数就行,它只会构建指定项目的直接子模块,不会触发依赖的其他模块:

mvn install --projects ":parent" --include-child-modules

或者简写:

mvn install -pl ":parent" -plm

要是你不需要构建parent本身,只想要它的子模块,要是子模块的坐标有规律(比如都是parent-xxx),可以用通配符:

mvn install --projects ":parent-*"

但如果子模块坐标就是:child1、:child2这种,通配符不好使,还是用--include-child-modules更靠谱。

注意

  • --include-child-modules只处理指定项目的直接子模块,不会递归更深层的模块
  • 要是你的Maven版本低于3.3.0,要么升级版本,要么继续用手动枚举的办法

内容的提问来源于stack exchange,提问作者joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:06:29