The following solutions enables you to package your project for different environments, like develop / test /staging /live.
The profile definition:
<profiles> <profile> <id>develop</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profile.name>develop</profile.name> </properties> </profile> <profile> <id>windows</id> <properties> <profile.name>live</profile.name> </properties> </profile> </profiles>
In the project you create a subdirectory in src/main/profiles for every profile. In that subdir you can put configuration files that are specific for the targeted environment. Mine usually contain a log4j.xml and a deploy.properties that my Spring configuration uses (for more on this see Use PropertyOverrrideConfigurer to target different deployment environments).
Next we add resources to the build. Note the ${profile.name} parameter.
<build> <resources> <resource> <directory>src/main/profiles/${profile.name}</directory> <includes> <include>*.xml</include> <include>*.properties</include> </includes> </resource>
To use a specific profile in maven you use the -P parameter:
mvn package -Pdevelop