执行mvn clean install时如何优先构建指定非父子依赖模块?
解决方案
你可以通过以下两种方式实现需求:
方法一:使用Maven命令行参数
如果你的三个项目(aaa、ddd、maven-Hell)在同一父目录下,比如:
workspace/ ├── aaa/ ├── ddd/ └── maven-Hell/
直接在workspace目录下执行以下命令:
mvn clean install --projects maven-Hell --also-make
--also-make参数会自动检测并构建maven-Hell依赖的所有本地模块(即aaa和ddd),完成后再构建maven-Hell本身。
如果需要直接在maven-Hell目录下执行,可指定依赖模块的相对路径:
mvn clean install --projects ../aaa,../ddd,. --also-make
方法二:创建聚合POM(推荐)
创建一个仅用于聚合的Maven项目(打包类型为pom),将三个模块纳入其中,Maven会自动根据依赖关系调整构建顺序。
- 在
workspace目录下新建一个目录(比如maven-aggregator),创建pom.xml文件,内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dor</groupId> <artifactId>maven-aggregator</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <modules> <module>../aaa</module> <module>../ddd</module> <module>../maven-Hell</module> </modules> </project>
- 进入
maven-aggregator目录,执行:
mvn clean install
Maven会自动识别maven-Hell对aaa、ddd的依赖,先构建这两个模块,再构建maven-Hell,无需手动指定顺序。
注意事项
- 确保
maven-Hell的pom.xml中引用的aaa、ddd版本与对应模块的pom.xml版本一致; - 构建完成后,本地仓库会存储这两个模块的构建产物,
maven-Hell构建时会优先使用本地版本。
内容的提问来源于stack exchange,提问作者NPE_founder
相关产品推荐
相关产品推荐

