我在Mac上使用Maven 3.3.0。我想利用maven-war插件的useCache特性,但它在我的多模块项目中没有做任何事情。当我跑的时候
mvn clean install -DskipTests使用下面的配置运行我的项目大约需要1:25。
<profile>
<id>prepare-deploy-war-to-jboss</id>
<activation>
<file>
<exists>${basedir}/src/main/webapp</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<useCache>true</useCache>
<cacheFile>/tmp/${project.artifactId}/war/work</cacheFile>
</configuration>
</plugin>
</plugins>
</build>
</profile>然后我再次运行相同的命令,这个项目花费了相同的时间。我可以看到“工作”文件正在被创建,所以插件肯定在运行,但是连续的构建似乎没有做任何事情。
我在这里的问题与其说是为什么useCache不加快我的构建,而是我如何以不同的方式配置我的插件,从而使连续运行能够加快构建速度?如果有另一个插件,我应该使用,以加快构建的背靠背运行,那么这也就足够了。
发布于 2016-04-05 19:40:54
看一下战争魔法码 (在编写本文时),缓存主要是由其有关覆盖管理的web应用程序结构使用的,因此在大多数情况下,缓存实际上不会提高构建时间。
此外,正如其正式文件所述,缓存机制是实验性的特性,因此默认情况下是禁用的,这可能还没有达到用户的期望。
不管这个缓存选项的有效性如何,一些加快maven构建的提示可能是:
clean。-o选项),如果您需要的所有东西都已经在本地缓存中了-T选项)-q选项),暂时关闭构建日志,只获取错误日志(基本上:没有消息,好消息)war打包结构时激活的,这可能意味着此配置文件是聚合器/父pom的一部分,然后只在war模块上激活。尽管它可能影响很小,也可以考虑将War配置移动到它的相关模块,并避免这样的触发配置最后但并非最不重要的一点是,在开发期间,构建时间可能比war大小更重要,因此可以通过选项关闭添加到war文件中的外部库重新压缩的默认机制:
指示是否应该再次压缩添加到war中的zip档案(jar、zip等)。再次压缩可能会导致较小的归档大小,但会显著延长执行时间。 默认:
true
因此,示例配置如下所示:
<properties>
<war.recompress.files>false</war.recompress.files>
</properties>
<build>
<finalName>webapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<recompressZippedFiles>${war.recompress.files}</recompressZippedFiles>
</configuration>
</plugin>
</plugins>
</build>注意:由于这个配置条目没有用户属性,所以我还为它添加了一个属性,通过命令行(或profile)按需打开/关闭它。
然后,您可以根据先前的配置测试执行默认构建的不同执行时间(上面的配置禁用了重新压缩)(下面,按需切换当前执行的重新压缩):
mvn clean install -Dwar.recompress.files=true然后,您可以考虑通过剖析它来打开/关闭它,这取决于开发阶段。
https://stackoverflow.com/questions/36435499
复制相似问题