maven 打包编译
像你们中的许多人一样,我正在使用多模块Maven项目 。 与现有的许多系统相比,它不是一个巨大的系统,它具有15个模块,3种不同的耳朵部署,带有属性文件的大量参数化以及大约10万行Java代码。 在开发高峰期,由于代码的遗留来源,因此代码需要大量重构,因此需要为每个开发人员进行连续的编译/打包和部署。
尽管这些年来学习难度很大,但我还是接受了Maven及其哲学。 我并不是说这是完美的,但我真的相信这是一个很好的工具,仍然有用,尤其是当您的项目和团队随着项目的增长而增长时。 (尽管这篇文章不是关于Maven传福音的)。
因此,我们团队的问题之一是,尽管切换了正确的标志 ,将代码破坏并打包到模块中,使用配置文件和maven提供的所有“工具”,我们的构建和打包时间却开始缓慢增加,彻底清洁后达到1分钟的阈值。 我们的主要编译器是Sun / Oracle Javac,其时间是通过命令行打包而不是通过IDE进行监视的,您可以在其中看到不同的时间,具体取决于“ Maven集成”和每种工具调用的内部编译器。 [我的参考机器是我的旧款MacBookPro 2009,Core 2 Duo 2.5,具有Vertex 3 SSD(启用了Trim)]
最近,当我浏览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! 高隆!
maven 打包编译