What happens when you need to provide customizations based on variables like operating systems or JDK version? Maven provides a way to "activate" a profile for different environmental parameters.
<profile>
<id>jdk16</id>
<activation>
<jdk>1.6</jdk>
</activation>
<modules>
<module>simple-script</module>
</modules>
</profile>
The activation
element lists the conditions for profile activation. In this example, we've specified that this profile will be activated by Java versions that begin with "1.6". This would include "1.6.0_03", "1.6.0_02", or any other string that began with "1.6".
In this profile we are adding the module simple-script
. Adding this module will cause Maven to look in the simple-script/
subdirectory for a pom.xml
.
Activations can contain one of more selectors including JDK versions, Operating System parameters, files, and properties. A profile is activated when all activation criteria has been satisfied.
<project>
...
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>mavenVersion</name>
<value>2.0.5</value>
</property>
<file>
<exists>file2.properties</exists>
<missing>file1.properties</missing>
</file>
</activation>
...
</profile>
</profiles>
</project>
The activeByDefault
element controls whether this profile is considered active by default.
This profile will only be active for JDK versions that begin with "1.5". This includes "1.5.0_01", "1.5.1".
This profile targets a very specific version of Windows XP, version 5.1.2600 on a 32-bit platform. If your project uses the native plugin to build a C program, you might find yourself writing projects for specific platforms.
The property
element tells Maven to activate this profile if the property mavenVersion
is set to the value 2.0.5
. mavenVersion
is an implicit property that is available to all Maven builds.
The file
element allows us to activate a profile based on the presence (or absence) of files. The dev
profile will be activated if a file named file2.properties
exists in the base directory of the project. The dev
profile will only be activated if there is no file named file1.properties
file in the base directory of the project.
You can also activate a profile in the absence of a property.
<profile>
<id>development</id>
<activation>
<property>
<name>!environment.type</name>
</property>
</activation>
</profile>
No comments:
Post a Comment