2011-03-24 82 views
1

我有兩個WARS:如何在使用Maven構建WAR時過濾覆蓋的WAR資源?

  1. 基本覆蓋
  2. 例如,應用

基本覆蓋在src/main/webapp/WEB-INF/spring/*.xml XML配置文件。在這些XML配置文件中,我有一些參數需要在構建示例應用程序WAR時進行過濾,這些WAR取決於基礎疊加層作爲疊加層。例如,base-overlay/src/main/webapp/WEB-INF/spring/app-context.xml其中有${data.url}。打包示例應用程序WAR時,我已將POM屬性<data.url>http://example.com:1234</data.url>設置爲替換基本覆蓋的${data.url}

當我配置Maven的戰爭插件過濾這個文件,我不得不放棄它的target/war/work/com.example/base-overlay/WEB-INF/spring目錄只是爲了找到app-config.xml文件將其添加到新包裝的例子,應用程序WAR之前過濾。這看起來像一個黑客,並且在使用Jetty進行測試時也不起作用,因爲WAR不會被創建和過濾。

此外,POM的<build/>元素有一個<resources/>元素,但我無法讓它工作。

編譯時如何過濾疊加資源?

+0

也許你應該發佈example-app的相關pom片段。 – Raghuram 2011-03-25 03:56:05

回答

0

要解決這個問題,我感動了所有XML資源(春季)到合適的Maven資源目錄${basedir}\src\main\resources\,然後補充說,在像<build/>元素的POM:

<resources> 
    <resource> 
     <directory>${basedir}/src/main/resources/</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

我列入共同XML資源不需要在基礎疊加WAR中對其進行過濾。在每個使用基本覆蓋WAR的應用程序中,我添加了一個名爲filtered-resources.xml的XML文件,每次應用程序WAR由Jetty打包和組裝時都會對其進行過濾。