3

我有一个巨大的应用程序,在不同配置的不同环境中运行。所以我需要生成不同的包/META-INF/context.xml

这是我的META-INF/文件夹:

META-INF/
  context.xml  
  context2.xml  
  context3.xml  
  context4.xml  

我已经尝试过maven-antrun-plugin,但它无法处理里面的文件META-INF/

现在,我正在尝试maven-war-plugin,但它不会重命名或复制文件。它只添加或排除文件。所以我需要一些帮助。

我想生成一个战争包,只选择其中一个,重命名或覆盖原来的context.xml.

注意:我正在使用配置文件。

4

2 回答 2

0

首先,不要将输入文件放在 META-INF 中。将它们放在 maven 不知道的文件夹中。现在将属性设置为每个配置文件中的文件名

  <properties>
    <folder>path/to/context/files</folder>
  </properties>

<profile>
  <id>foo</id>
  <properties>
    <filename>context2.xml</filename>
  </properties>
</profile>
<!-- etc. -->

现在使用 antrun 插件并定义一个 ant 属性:

<property name="maven.context.file" value="${folder}/${filename}"/>

在调用 ant 目标之前,如 antrun 使用页面所述

于 2012-09-04T16:36:30.867 回答
0

一种选择<packagingExcludes><packagingIncludes>maven-war-plugin.

例如排除context.xml, 和context1.xml:

 <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <packagingExcludes>META-INF/context.xml,META-INF/context1.xml</packagingExcludes>
        </configuration>
  </plugin>

您可以在包含和排除部分使用正则表达式来过滤掉各种文件。这个 maven wiki涵盖了有关此主题的更多示例和详细信息。

于 2012-09-04T16:08:55.783 回答