How can I create a Maven build profile to conditionally copy files?
build, eclipse, java, maven, maven-3
Solution
It worked after I added `filtering= true`
<build>
<finalName>myacct_okc</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>true</filtering>
<directory>config/${environment}</directory>
</resource>
</resources>
</build>
Problem
I new to maven and I am trying to create pom.xml to build the war files for different environment using profiles So I created the build target ``` <build> <finalName>myacct_okc</finalName> <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>config/${environment}</directory> </resource> </resources> </build> ``` And then created the profiles for each environment ``` <profiles> <profile> <id>local</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <environment>local</environment> </properties> </profile> <profile> <id>jboss</id> <properties> <environment>jboss</environment> </properties> </profile> <profile> <id>dev</id> <properties> <environment>dev</environment> </properties> </profile> ``` and I create a config folder for each env ``` project root |-- src | |-- main | | |-- java | | |-- resources | | | |-- config.xml | | | +-- config.properties | | |-- webapp | | | |-- META-INF | | | | +--context.xml | | |-- config | | | |-- local | | | | |--config.properties | | | | +--config.xml | | | |-- jboss | | | | |--config.properties | | | | +--config.xml | | | +-- dev | | | | |--config.properties | | | | +--config.xml +--pom.xml ``` Now when I run this pom.xml with any profile for e.g. jboss, the files form config/jboss folder are not getting copied ( or I mean the files in src/main/resources are not getting replaced). when I enabled the debug on on maven build I can see the copy getting executed. ``` [DEBUG] resource with targetPath null directory C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss excludes [] includes [] [DEBUG] ignoreDelta true [INFO] Copying 2 resources [DEBUG] file config.xml has a filtered file extension [DEBUG] copy C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss\config.xml to C:\Projects\workspace\myaccount_build_4\myaccount\target\classes\config.xml [DEBUG] file config.properties has a filtered file extension [DEBUG] copy C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss\META-INF\config.properties to C:\Projects\workspace\myaccount_build_4\myaccount\target\classes\META-INF\config.properties ``` But it is not replacing the files. The files are still the same as from src/main/resources. Maven version is 3.0.4 Can someone help me what I am doing wrong ? I have looked at this question. This provides a solution but I want to override the files rather then excluding them and then copy.