2011-09-08 62 views
9

我將一個Ant webapp項目轉換爲Maven。我大部分工作正常,但我一直在試圖找出如何根據配置文件從不同來源複製一些資源文件。我有src/main/resources/persistence-{dev, prod}.xml。其中一個需要作爲WEB-INF/classes/META-INF/persistence.xml包含在戰爭檔案中。Maven:包含基於配置文件的資源文件

我希望在dev配置文件處於活動狀態時複製dev版本,並在prod處於活動狀態時激活prod版本。

+1

我不認爲maven資源插件解決了他的問題,因爲據我所知這個插件只能包含或排除文件,不能複製和重命名它們。 – allaf

回答

8

只需使用像這樣的http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html這樣的maven資源插件,並且具有文件名或配置文件中的擴展集屬性。

+4

您的回答不包括重命名persistence.xml文件。 – mwalter

+5

而不是有不同的源文件名,你可以有不同的文件夾,你從哪裏加載資源,並作爲一個屬性,所以你不必重命名文件.. –

+0

@ManfredMoser - 我想在一個'持久性.xml'是合適的方法。 – JimHawkins

6

如果你沒有選擇使用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> 

限定defaul T當你創建一個沒有指定配置文件:

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

和....確保您開啓資源過濾:

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

然後你建立與MVN -Phib調試,瞧!換人完成。

相關問題