有条件地包含maven中的文件

时间:2013-07-02 16:26:49

标签: java build maven-3 java-ee-6

我有一个JEE6 Web应用程序项目。项目结构符合maven惯例。

现在我已经为这个项目引入了额外的web.xml文件。

所以它们现在存储在WEB-INF中,如下所示:

WEB-INF /

     |__ A/web.xml

     |__ B/web.xml

根据属性构建战争以包含适当的xml的方法是什么。

我知道如何在maven中添加自定义属性。但我找不到如何配置maven插件,以便在war文件构建期间选择相应的文件。

在这种情况下,任何提示/建议/ maven最佳实践都是受欢迎的。

谢谢!

1 个答案:

答案 0 :(得分:3)

maven war plugin可以配置为添加和过滤一些外部资源。请参阅http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html

所以我会用2个war插件配置制作2个maven profiles,如下所示:

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
      <webResources>
        <resource>
          <!-- this is relative to the pom.xml directory -->
          <directory>src/main/webapp/WEB-INF/__A</directory>
          <includes>
            <include>web.xml</include>
          </includes>
          <targetPath>WEB-INF</targetPath>
        </resource>
      </webResources>
    </configuration>
  </plugin>
  <!-- repeat for your second profile -->

但是我认为更好的解决方案(如果你的项目允许的话)将只保留一个带有一些过滤属性的web.xml文件。在这种情况下,您应该只配置war插件以启用一些这样的过滤:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
      <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
    </configuration>
  </plugin>