我正在使用Maven 3.1.1并使用Maven-war插件v 2.4。我想在$ {basedir} / target / war / work目录以外的目录中创建缓存,但我似乎无法弄清楚如何配置插件来执行此操作。我试过了
<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 :(得分: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
答案 1 :(得分:0)
不推荐直接在goals
下声明plugin
。请使用:
<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
标记)。
答案 2 :(得分: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>
当maven执行包阶段时,这应该触发inplace
目标。