基于Maven配置文件的context.xml中的JNDI配置

特定

我很想和maven一起做“时髦的东西”而且我遇到了困境。 我需要部署两个单独的服务器,每个服务器作为context.xml定义的略有不同的JDNI资源配置文件

我的文件结构是这样的:( 虽然如果有更好的方法,我可以改变它

 src/main/webapp/META-INF/context.xml src/main/webapp/META-INF/context.devel.xml src/main/webapp/META-INF/context.prod.xml 

根据部署目标,我想使用适当的context.TARGET.xml文件。

我知道我需要设置两个不同的构建配置文件,例如:

   prod   devel   

但是从这里我对最佳解决方案是什么感到困惑。 我理解使用war插件我可以排除context.xml但是context.xml起我很困惑该怎么做。

有没有办法在我的context.xml中有一个变量,我可以使用maven“写”而不是拥有2个不同的配置文件。

有什么建议么?

这里有一些提示。

  • 你只需要一个context.xml
  • 使用自定义maven属性替换context.xml的服务器特定条目。 例如:$ {myServer}或$ {dbUser}
  • 像这样在您的配置文件中定义这些属性
   prod  srv-prod.yourcompany.com james    devel  srv-devel.yourcompany.com richard    
  • 正确配置maven-war-plugin 。
   org.apache.maven.plugins maven-war-plugin 2.5  true   src/main/webapp/META-INF /META-INF true      
  • 激活maven构建中的相应配置文件。 例如,在命令行上调用mvn -Pprod clean package 。 或者在IDE中激活所需的配置文件。 对于devl使用-Pdevl而不是。

您可以使用maven资源过滤来显式包含或排除Maven构建生命周期的进程资源阶段中的特定文件。

   prod   src/main/resources/META-INF true  **/context.prod.xml      devel   src/main/resources/META-INF true  **/context.devl.xml      

文档可以在这里找到。