2014-02-14 44 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