我有一个庞大的应用程序,在不同的环境中运行,具有不同的配置。
所以我需要使用不同的/META-INF/context.xml
生成包。
这是我的META-INF/
文件夹:
META-INF/
context.xml
context2.xml
context3.xml
context4.xml
我已经尝试过 maven-antrun-plugin ,但它无法处理META-INF/
内的文件。
现在,我正在尝试 maven-war-plugin ,但它不会重命名或复制文件。它只添加或排除文件。所以我需要一些帮助。
我想生成一个war包,只选择其中一个,重命名或覆盖原始context.xml
。
注意:我正在使用个人资料。
答案 0 :(得分: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>
您可以在include和exclude部分中使用regex来过滤掉各种文件。这个maven wiki涵盖了有关此主题的更多示例和详细信息。
答案 1 :(得分: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}"/>
在致电蚂蚁目标之前,as mentioned on the antrun usage page。