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

时间:2011-09-08 19:45:45

标签: maven

我正在将一个Ant webapp项目转换为Maven。我有大部分工作,但我不知道如何根据配置文件弄清楚如何从不同的源复制一些资源文件。

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

我希望在dev配置文件处于活动状态时复制dev版本,并在prod处于活动状态时复制prod版本。

2 个答案:

答案 0 :(得分:10)

只需使用像http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html这样的maven资源插件,并在配置文件中设置文件名或扩展名的属性。

答案 1 :(得分: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构建并瞧!换人就完成了。