2014-02-14 86 views
0

我正在使用Maven 3.1.1並使用Maven-war插件v 2.4。我想在$ {basedir}/target/war/work目錄以外的目錄中創建緩存,但我似乎無法弄清楚如何配置插件來實現這一目標。我試過如何更改Maven-WAR插件的緩存文件位置?

      <plugins> 
            <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-war-plugin</artifactId> 
              <version>2.4</version> 
              <configuration> 
                <useCache>true</useCache> 
                <workDirectory>/tmp/${project.artifactId}/war/work</workDirectory> 
              </configuration> 
              <goals> 
                <goal>inplace</goal> 
              </goals> 
            </plugin> 
          </plugins> 

但是,工作目錄從不改變。任何想法如何配置的東西,使插件尊重我想放置緩存文件的位置?

+0

正在運行什麼命令當你期望輸出在/ tmp/...? – Augusto

+0

我正在運行「mvn clean install」 – Dave

+0

爲什麼你想改變那個目錄?這是什麼原因? – khmarbaise

回答

1

我打算在調試標誌(mvn -X clean install)的幫助下解釋我發現的內容。

默認值爲:

<workDirectory default-value="${project.build.directory}/war/work"/> 
<cacheFile default-value="${project.build.directory}/war/work/webapp-cache.xml"/> 

maven war plugin's doc所述,workDirectory參數是其中疊加將暫時提取其中;改變它不會影響緩存文件的路徑。

相反,加入求CacheFile標籤配置

<configuration> 
    <useCache>true</useCache> 
    <cacheFile>/customdir/webapp-cache.xml</cacheFile> 
</configuration> 

將覆蓋緩存的最終位置,導致:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-war-plugin:2.4:war' with basic configurator --> 
[DEBUG] (s) archiveClasses = false 
[DEBUG] (s) attachClasses = true 
[DEBUG] (s) cacheFile = C:\customdir\webapp-cache.xml 

問候, PaoloC

0

直接在plugin下聲明goals已棄用。請使用:

<plugins> 
    <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.4</version> 
     <executions> 
       <execution> 
         <goals> 
          <goal>inplace</goal> 
         </goals> 
        <configuration> 
         <useCache>true</useCache> 
         <workDirectory>/tmp/${project.artifactId}/war/work</workDirectory> 
        </configuration> 
      </execution> 
     </executions>            
    </plugin> 
</plugins> 

(注意executions標籤)。

+0

我試過這個,但是現在沒有任何地方生成「war/work」目錄。我甚至嘗試註釋掉我的「」配置,但仍然沒有配置生成緩存文件。 – Dave

0

我還沒有嘗試過這個,但我認爲問題在於您沒有將該執行與階段關聯。默認情況下,inplace目標不是與(它被關聯到包裝階段不同war)的任何階段

你可以嘗試相關的下列

<executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
     <goal>inplace</goal> 
     </goals> 
     <configuration> 
     <useCache>true</useCache> 
     <workDirectory>/tmp/${project.artifactId}/war/work</workDirectory> 
     </configuration> 
    </execution> 
</executions> 

這應該觸發inplace目標時,Maven運行package階段。

+0

我試過這個,這次生成了緩存文件,但它仍然在我的目標目錄中生成,而不是在我指定的「/ tmp」目錄中。 – Dave