如何创建Maven构建配置文件以有条件地复制文件?

我是maven的新手,我正在尝试使用配置文件创建pom.xml来为不同的环境构建war文件

所以我创建了构建目标

 myacct_okc   src/main/java  **/*.java    src/main/resources   config/${environment}    

然后为每个环境创建配置文件

   local  false   local    jboss  jboss    dev  dev   

我为每个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 

现在当我使用任何配置文件运行这个pom.xml例如jboss时,不会复制config / jboss文件夹中的文件(或者我的意思是src / main / resources中的文件没有被替换)。

当我在maven构建上启用调试时,我可以看到副本被执行。

  [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 

但它不是替换文件。 这些文件仍然与src / main / resources相同。

Maven版本是3.0.4

有人可以帮我解决我做错的事吗?

我看过这个问题 。 这提供了一个解决方案,但我想覆盖文件而不是排除它们然后复制。

我相信你必须在复制资源执行中将你的资源添加到maven-resources-plugin。

  maven-resources-plugin   copy-config copy-resources  copy-resources   ${project.build.outputDirectory}   src/main/java  **/*.java    src/main/resources   config/${environment}       

在我添加filtering= true之后它工作了

   myacct_okc   src/main/java  **/*.java    true src/main/resources   true config/${environment}