Maven profiles in modules
I have a Maven Java EE project with several modules.
PROJECT
--EJB
--WEB1
--WEB2
--EAR
Now I want to create a profile which compile and include WEB1 and one profile which include both
To exclude/include the module from the build, I include the wanted sub-modules in the main pom.xml according to the selected profile. This works fine.
The problem is the dependencies in the EAR module.
How do I exclude开发者_如何学JAVA either the module WEB1 or WEB2. Redefine the profiles part don't work.
The question is: Is there a way to control the dependencies in a module of a project, according to the selected profile
EDIT:
My fault, I have create the tags in the instead as direct in the root
Exclusion of modules based on profiles is not possible, but inclusion works with usage of special feature 'combine.children' since maven 3.0.2, described in http://www.sonatype.com/people/2011/01/maven-how-to-merging-plugin-configuration-in-complex-projects/
So you have to define minimal content of EAR as default and with profiles add dependencies/modules in following way in your ear module:
<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>
精彩评论