所以,我有一个基本上是这样的maven项目:
module_parent.pom:
<?xml version="1.0" encoding="UTF-8"?>
<project ...>
<parent>
<artifactId>test_module_dependencies</artifactId>
<groupId>test_module_dependencies</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module_parent</artifactId>
<packaging>pom</packaging>
<modules>
<module>module_child_1</module>
<module>module_child_2</module>
</modules>
</project>
module_child_1.pom:
<project ...>
<parent>
<artifactId>module_parent</artifactId>
<groupId>test_module_dependencies</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>module_child_1</artifactId>
<profiles>
<profile>
<id>profile1</id>
<dependencies>
<dependency>dependency1</dependency>
</dependencies>
</profile>
<profile>
<id>profile2</id>
<dependencies>
<dependency>dependency2</dependency>
</dependencies>
</profile>
</profiles>
</project>
module_child_2.pom:
<project ...>
<parent>
<artifactId>module_parent</artifactId>
<groupId>test_module_dependencies</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<artifactId>module_child_2</artifactId>
<dependencies>
<dependency>
<groupId>test_module_dependencies</groupId>
<artifactId>module_child_1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warName>crit-workflow</warName>
<webXml>WEB-INF/web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
(我试图尽可能地缩短代码)。 因此,module_child_2是一个WAR模块。我想在做一个“mvn clean install -P profile1”时,在module_child_2的目标中有一个.war文件。我有它。问题是profile1中的依赖项不包含在.war文件中。我检查了配置文件是否实际加载,使用带有a的maven-antrun-plugin,我可以确认它已加载。
但是module_child_1的profile1的依赖关系不包含在module_child_2.war存档中。
NB如果我将activeByDefault = true,则包含dependency1库。但即使profile1配置文件未激活,它也包括在内。