2014-09-23 80 views
0

在我們Peoject中,persistence.xml位於相對目錄Maven的:過濾persistence.xml中

/src/main/resources/META-INF

,並沒有在該文件中的POM給予任何額外的指令將被複制到

/WEB-INF/classes/META-INF

在Maven構建過程中。這是好的,因爲hibernate能夠從那裏選擇配置文件。但是現在我們想要集中一些配置值,因此使用maven-war-plugin替換persistence.xml中的引人注意的通配符

過濾本身是針對各種其他文件執行的,並按預期工作。對於persistence.xml但它似乎不能以各種理由:

當只需添加persistence.xmlwebResources

<resource> 
    <directory>${basedir}/src/main/resources/META-INF/</directory> 
    <filtering>true</filtering> 
    <includes> 
     <include>persistence.xml</include> 
    </includes> 
</resource> 

文件被正確地進行過濾,但OFC。拋出到輸出目錄的根目錄,在那裏hibernate沒有在尋找它。

當試圖以提供所需的目標文件夾:

<resource> 
    <directory>${basedir}/src/main/resources/META-INF/</directory> 
    <filtering>true</filtering> 
    <includes> 
     <include>persistence.xml</include> 
    </includes> 
    <targetPath>WEB-INF/classes/META-INF</targetPath> 
</resource> 

文件沒有正確過濾。 我認爲過濾將實際上工作,但由於該文件已被複制那裏,maven拒絕覆蓋仍包含通配符的文件

任何想法如何使這項工作不重新發明輪子?

回答

-1

我想出瞭解決方案。只要發佈,以防有​​人絆倒同一問題:

上面列出的過濾被封裝在<webResources>標籤,因爲它實際上是關於處理webapp-content。

因此,概括地說,我告訴Maven來不接觸,並部署webresources當部署每資源嘗試處理資源並將其部署到一個資源文件夾 - 這已經發生了未處理。

+0

你有一個工作的片段? – CSchulz 2015-06-17 16:45:19

+0

太無知,特別是在處理Maven時。 – hoefling 2015-12-13 17:25:18

1

在這裏,你有XML代碼片段,對我的作品:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
    <webResources>       
     <resource> 
     <filtering>true</filtering> 
     <directory>src/main/resources/META-INF</directory>        
     <includes> 
      <include>**/persistence.xml</include> 
     </includes> 
     <targetPath>WEB-INF/classes/META-INF</targetPath> 
     </resource>    
    </webResources> 
    </configuration> 
</plugin>