像你们中的许多人一样,我正在使用多模块Maven项目 。 与现有的许多系统相比,这不是一个很大的数目,它具有15个模块,3种不同的耳朵部署,带有属性文件的大量参数化以及大约10万行Java代码。 在开发高峰期,由于代码的遗留来源,因此代码需要大量重构,因此需要为每个开发人员进行持续的编译/打包和部署。

尽管这些年来学习难度很大,但我还是接受了Maven及其哲学。 我并不是说那是完美的,但我真的相信这是一个很好的工具,仍然有用,尤其是在您的项目和团队随着项目的发展而壮大时。 (尽管这篇文章不是关于Maven传福音的)。

因此,我们团队的问题之一是,尽管切换了正确的标志 ,将代码破坏并打包到模块中,使用配置文件和maven提供的所有“工具”,我们的构建和打包时间却开始缓慢增加,彻底清洁后达到1分钟的阈值。 我们的主要编译器是Sun / Oracle Javac,并且通过命令行而不是IDE进行打包来监视时间,在此您可以看到不同的时间,具体取决于“ Maven集成”和每种工具调用的内部编译器。 [我的参考机器是我的旧款MacBookPro 2009,Core 2 Duo 2.5,带有Vertex 3 SSD(启用了修剪)]

最近,当我浏览Jason Van Zyl ( 他是Maven的父亲 )的Twitter帐户时,我发现了takari生命周期插件 。 Jason和他的团队正在为Maven生态系统创建工具和插件,我希望将Maven社区多年来寻求的Maven生态系统带来人们期待已久的发展。

简而言之,takari生命周期插件是Maven生命周期的一种替代实现,它将5个不同的插件合而为一。 激活它后,它将接管并调用以下5种实现:

  • 资源插件
  • 编译器插件
  • jar插件
  • 安装插件
  • 部署插件

你可以在这里阅读。 至少在我看来,最棒的是编译器插件,该插件在内部实施增量编译策略,该策略基于可以检测源文件和资源变化的机制!

为了理解区别,当在您的maven构建中使用takari编译器插件与经典编译器插件和javac(您中很多人可能会使用)进行比较时,我将共享此博客文章中的表格(解释增量编译) )。


显然,如果您选择调用JDT而不是Javac,结果将更好。 当前,我们坚持使用Javac ,但是上图使我在IntelliJ IDE上更改了默认编译器,尤其是当我进行重构和更改时,与Javac相比, JDT在增量编译方面要好得多。

安全吗

好吧,就我而言(我想在那里有很多人),我只是按照建议的方式
在这里 。 我在父pom中激活了插件,然后将所有jar模块的包装类型更改为'takari-jar'。

takari-jar

事实并非如此,最终更改是如此容易,您可以将其还原。

我在git repo上推送了takari生命周期更改的那一天,半小时后,我开始听到团队成员的“哇”和“ yeees”。 更改后重新打包非常便宜,对资源文件和属性的更改可确保在需要时获得新的打包。 我们的重新包装时间减少到50%-60%以上。

如果您的Maven版本碰巧遇到相同的问题,我强烈建议您尝试使用takari一天-这将使您和您的团队在一些严肃的时间上感到同样。

我还想指出,takari是免费的,尽管takari团队是为一个不知名的“大”客户开发和更新的,但该团队可以免费免费赠送它并与社区共享。 所以非常感谢您!!!该插件可以在maven Central中找到。

takari小组正在每周进行一次Google hangout ,信息可以在这里找到,我很抱歉我还没有参加,也许很早就参加了。

所以去Maven! 高隆!

翻译自: https://www.javacodegeeks.com/2014/11/do-you-really-want-to-speed-up-your-maven-compilepackaging-then-takari-lifecycle-plugin-is-the-answer.html

您是否真的要加快Maven的编译/打包速度? 那么takari生命周期插件就是答案。相关推荐

  1. maven 打包编译_您是否真的想加快Maven的编译/打包速度? 那么takari生命周期插件就是答案。...

    maven 打包编译 像你们中的许多人一样,我正在使用多模块Maven项目 . 与现有的许多系统相比,它不是一个巨大的系统,它具有15个模块,3种不同的耳朵部署,带有属性文件的大量参数化以及大约10万 ...

  2. Maven第6篇:生命周期 插件

    Maven第6篇:生命周期 & 插件 前面我们使用maven过程中,用到了一些命令,如下: mvn clean mvn compile mvn test mvn package mvn ins ...

  3. Maven环境搭建及常用命令、生命周期

    一.下载maven包,解压 二.配置环境变量,MAVEN_PATH=解压路径 添加到path中 三.测试  mvn -v 查看maven版本 四.设置本地仓库的路径 在conf文件夹下的setting ...

  4. maven项目如何打包运行指定java程序(maven-shade-plugin插件的使用)

    其实maven项目的打包就是将项目代码打包成可执行文件,在maven中有默认的打包插件,但是想要运行指定java程序就要使用maven-shade-plugin插件 maven-jar-plugin是 ...

  5. maven详解之生命周期与插件

    Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...

  6. maven入门(1-3)maven的生命周期

    maven的生命周期 maven的生命周期是抽象的,其实际行为都由插件来完成,引入maven 的 生命周期就是为了对所有的构建过程进行抽象和统一. 这种方式类似于模板方法,模板方法模式在父类中定义算法 ...

  7. maven 生命周期

    2019独角兽企业重金招聘Python工程师标准>>> maven 生命周期 博客分类: maven . 三套生命周期      Maven拥有三套相互独立的生命周期,它们分别为cl ...

  8. Maven之(二)Maven生命周期

    我们在开发项目的时候,不断地在编译.测试.打包.部署等过程,maven的生命周期就是对所有构建过程抽象与统一,生命周期包含项目的清理.初始化.编译.测试.打包.集成测试.验证.部署.站点生成等几乎所有 ...

  9. Maven生命周期详解

    Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我 ...

最新文章

  1. MATLAB常用函数, 常见问题
  2. python3-Python3 数字(Number)
  3. Microsoft .NET Compact Framework 开发常见问题解答
  4. 自定义控件 - 流式布局:TagFlowLayout
  5. 2017年Q1安卓ROOT类恶意病毒发展趋势研究报告
  6. JZOJ 2309. 【中山市选2011】辽哥游戏
  7. java软尾山地车碳_JAVA FURIA 27.5入门软尾山地车评测
  8. java获取客服列表,java-从列表中获取处理案例的服务
  9. linux代码实现进程监控,linux进程监控shell脚本代码
  10. Syntaxhighligher 使用中的一些问题
  11. 【项目3-2】多肉植物网站
  12. 使用Standford coreNLP进行中文命名实体识别(NER)
  13. 计算机上机考试自我检查800字,检讨书自我反省800字考试没考好
  14. 元宇宙持续升温,金蝶推出数字员工破圈而来
  15. 音频源和音频监听脚本
  16. 快速复制软件哪个好用安全?支持一键复制粘贴的工具
  17. 机器学习LDA-基础Julia与Python的实现
  18. 数学符号--罗马字母
  19. 【QNX Hypervisor 2.2 用户手册】1.5 内存
  20. IDA调试修改内存数据

热门文章

  1. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用
  2. 面试项目 java-服务端 18h58
  3. android roboguice2,Android快速开发框架 roboguice
  4. kafka消费者接收分区测试
  5. mysql-on duplicate key update实现insertOrUpdate官方文档
  6. 转:Java并发编程与高并发解决方案(一)
  7. 基于maven的SpringMVC+Spring+MyBatis+Log4j2的pom配置
  8. springmvc(17)异步消息简介(部分)
  9. 并发工具类【线程安全相关的类】
  10. selenium自动化测试_Selenium测试可实现有效的测试自动化