Maven:基于配置文件包含资源文件

15

我正在将一个Ant Web应用程序项目转换为Maven。我基本上已经做到了大部分工作,但是我卡在了试图根据配置文件复制一些来自不同来源的资源文件上。

我有 src/main/resources/persistence-{dev, prod}.xml ,其中一个需要包含在war文件中作为 WEB-INF/classes/META-INF/persistence.xml

当dev配置文件启用时,我希望复制dev版本;当prod配置文件启用时,我希望复制prod版本。


1
我认为Maven资源插件无法解决他的问题,因为据我所知,该插件只能包含或排除文件,而不能复制和重命名它们。 - allaf
2个回答

13

6
你的回答没有涵盖更改 persistence.xml 文件的名称。 - mwalter
6
可以使用不同的文件夹来加载资源,而不是使用不同的源文件名,同时将文件夹作为属性进行加载,这样就无需重命名文件。 - Manfred Moser
@ManfredMoser - 我认为在一个 persistence.xml 中使用自定义属性是适当的方式。 - JimHawkins
3
可能是这样,也可能不是。但无论如何,这不是问题所在。 - Manfred Moser

7
如果您不固守使用3个单独的persistence.xml文件并进行有选择性地复制的范例,您可以使用maven配置文件和过滤器进行如下操作(我前几天刚实施了这种方法,并在今天看到了您的帖子):
在persistence.xml中:
<property name="hibernate.show_sql" value="${hibernate.debug}" />
<property name="hibernate.format_sql" value="${hibernate.debug}" />

在pom.xml中创建一个配置文件并定义变量:
<profiles>
  <profile>
    <id>hib-debug</id>
    <properties>
      <hibernate.debug>true</hibernate.debug>
    </properties>
  </profile>
</profiles>

在构建过程中没有指定配置文件时,为其定义一个默认值:

<properties>
  <hibernate.debug>false</hibernate.debug>
</properties>

并且...确保您打开了资源过滤:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

然后你使用mvn -Phib-debug进行构建,即可完成替换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接