2012-09-04 21 views
3

我有一个巨大的应用程序,在不同的环境下运行不同的配置。 所以我需要生成不同的包/META-INF/context.xml如何在Maven的包生成期间选择一个/META-INF/context.xml?

这是我META-INF/文件夹:

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

我已经试过Maven的antrun-插件,但它不能处理内部META-INF/文件。

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

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

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

回答

0

一个选项可能是在maven-war-plugin中使用<packagingExcludes><packagingIncludes>

例如排除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涵盖了关于这个主题的更多的例子和细节。

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目标,as mentioned on the antrun usage page之前。

相关问题