首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置我的Maven-war插件的useCache功能,使连续构建更快?

如何配置我的Maven-war插件的useCache功能,使连续构建更快?
EN

Stack Overflow用户
提问于 2016-04-05 19:35:28
回答 1查看 1.8K关注 0票数 1

我在Mac上使用Maven 3.3.0。我想利用maven-war插件的useCache特性,但它在我的多模块项目中没有做任何事情。当我跑的时候

代码语言:javascript
复制
mvn clean install -DskipTests

使用下面的配置运行我的项目大约需要1:25。

代码语言:javascript
复制
<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不加快我的构建,而是我如何以不同的方式配置我的插件,从而使连续运行能够加快构建速度?如果有另一个插件,我应该使用,以加快构建的背靠背运行,那么这也就足够了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-05 19:40:54

看一下战争魔法码 (在编写本文时),缓存主要是由其有关覆盖管理web应用程序结构使用的,因此在大多数情况下,缓存实际上不会提高构建时间。

此外,正如其正式文件所述,缓存机制是实验性的特性,因此默认情况下是禁用的,这可能还没有达到用户的期望。

不管这个缓存选项的有效性如何,一些加快maven构建的提示可能是:

  • 考虑您是否真的需要在每次运行时都使用clean
  • 考虑构建脱机(-o选项),如果您需要的所有东西都已经在本地缓存中了
  • 考虑在构建过程中使用线程(-T选项)
  • 考虑采用完全模式(-q选项),暂时关闭构建日志,只获取错误日志(基本上:没有消息,好消息)
  • 在您的示例中,War是在存在典型的war打包结构时激活的,这可能意味着此配置文件是聚合器/父pom的一部分,然后只在war模块上激活。尽管它可能影响很小,也可以考虑将War配置移动到它的相关模块,并避免这样的触发配置

最后但并非最不重要的一点是,在开发期间,构建时间可能比war大小更重要,因此可以通过选项关闭添加到war文件中的外部库重新压缩的默认机制:

指示是否应该再次压缩添加到war中的zip档案(jar、zip等)。再次压缩可能会导致较小的归档大小,但会显著延长执行时间。 默认true

因此,示例配置如下所示:

代码语言:javascript
复制
<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)按需打开/关闭它。

然后,您可以根据先前的配置测试执行默认构建的不同执行时间(上面的配置禁用了重新压缩)(下面,按需切换当前执行的重新压缩):

代码语言:javascript
复制
mvn clean install -Dwar.recompress.files=true

然后,您可以考虑通过剖析它来打开/关闭它,这取决于开发阶段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36435499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档