Maven 2 如何为多模块项目的一个模块执行不同的目标?
我有一个由两个不同模块组成的项目。我无法控制这些模块的pom文件,因此无法更改它们。我完全控制项目pom文件。项目id未定义为模块中的父项 文件夹结构:Maven 2 如何为多模块项目的一个模块执行不同的目标?,maven-2,Maven 2,我有一个由两个不同模块组成的项目。我无法控制这些模块的pom文件,因此无法更改它们。我完全控制项目pom文件。项目id未定义为模块中的父项 文件夹结构: project + module1 + module2 作为解决方案的一部分,我需要为两个模块执行两个不同的目标,以便module1安装到本地存储库中,而不是module2。这只是一个例子。我的实际问题包含多个级别,每个级别有两个以上的模块 为了最小化CI系统所需的配置,我想在一个maven调用中运行它 我在“梦见”一些类似于 mvn i
project
+ module1
+ module2
作为解决方案的一部分,我需要为两个模块执行两个不同的目标,以便module1安装到本地存储库中,而不是module2。这只是一个例子。我的实际问题包含多个级别,每个级别有两个以上的模块
为了最小化CI系统所需的配置,我想在一个maven调用中运行它
我在“梦见”一些类似于
mvn install -Dspecial=module:compile
这可能吗?如果可能,我该怎么做
(…)为了最小化CI系统所需的配置,我想在一个maven调用中运行它
恐怕这是不可能的。正如我在中所解释的,作为多模块构建的一部分调用的阶段或目标针对所有模块运行
如果要为子模块的子集运行不同的阶段或目标,则必须调用maven两次,可能需要使用--projects
,-pl
选项来选择正确的子集:
mvn-pl模块1、模块3-somegoal
mvn-pl模块2其他目标
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
</project>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
</modules>
<profiles>
<profile>
<id>with:module2</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module2</module>
</modules>
</profile>
</profiles>
</project>
然后使用命令:mvn-Dmodule2:ignore compile package
最后,一个有趣的功能是通过配置文件更改模块:
/pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
</project>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
</modules>
<profiles>
<profile>
<id>with:module2</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module2</module>
</modules>
</profile>
</profiles>
</project>
4.0.0
com公司
父母亲
1.0.0-SNAPSHOT
聚甲醛
模块1
带:模块2
真的
模2
要忽略模块2:mvn'-p!带:模块2’包
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
</modules>
<profiles>
<profile>
<id>with:module2</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module2</module>
</modules>
</profile>
</profiles>
</project>