我有一个包含多个模块的Maven Java EE项目。
PROJECT
--EJB
--WEB1
--WEB2
--EAR
现在我想创建一个编译并包含WEB1的配置文件和一个包含两者的配置文件
要从构建中排除/包含模块,我根据所选的配置文件在主pom.xml中包含所需的子模块。这很好。
问题是EAR模块中的依赖项。
如何排除模块WEB1或WEB2。重新定义配置文件部分不起作用。
问题是:是否有办法根据所选的配置文件控制项目模块中的依赖项
编辑:
我的错,我已经在根目录中直接创建了标签
答案 0 :(得分:4)
根据配置文件排除模块是不可能的,但是包含与使用特殊功能'combine.children'一起使用,因为maven 3.0.2,在http://www.sonatype.com/people/2011/01/maven-how-to-merging-plugin-configuration-in-complex-projects/中描述
因此,您必须将EAR的最小内容定义为默认值,并使用配置文件在您的ear模块中以下列方式添加依赖项/模块:
<project ....>
...
<name>EAR</name>
...
<dependencies>
<dependency>EJB</dependency> // specify groupId, artifactId, version, type ...
<dependency>WEB1</dependency>
</dependencies>
<profiles>
<profile>
<id>build-with-WEB2</id>
<dependencies>
<dependency>WEB2</dependency> // specify groupId, artifactId, version, type ...
</dependencies>
<build>
<plugins>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${maven-ear-plugin.version}</version>
<configuration>
<modules combine.children="append">
<webModule>
<groupId>...</groupId>
<artifactId>WEB2</artifactId>
<bundleFileName>WEB2.war</bundleFileName>
...
</webModule>
</modules>
</configuration>
</plugins>
</build>
</profile>
</profiles>
<build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${maven-ear-plugin.version}</version>
<configuration>
...
<modules>
<ejbModule>
<groupId>...</groupId>
<artifactId>EJB</artifactId>
<bundleFileName>EJB.jar</bundleFileName>
...
</ejbModule>
<webModule>
<groupId>...</groupId>
<artifactId>WEB1</artifactId>
<bundleFileName>WEB1.war</bundleFileName>
...
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
答案 1 :(得分:-1)
在以下链接中有一个类似的问题。也许有帮助:
Different dependencies for different build profiles in maven