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

像你们中的许多人一样,我正在使用多模块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(您中很多人可能会使用)进行比较时,我将共享此博客文章中的表格(解释增量编译) )。

CapturFiles_6
显然,如果您选择调用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机MMI体系结构及其实现

摘自:http://blog.csdn.net/zc2007/article/details/2340436 1引言 MMI(ManMachineInter-face),即人机界面,它负责和用户的交互,在必要的时候调用其它模块的功能。MMI模块在整个系统中处于最 高层&#x…

Aspose.Words简单生成word文档

Aspose.Words简单生成word文档 Aspose.Words.Document doc new Aspose.Words.Document(); Aspose.Words.DocumentBuilder builder new Aspose.W…

ubuntu下安装JDK和netbeans

我在ubuntu下安装netbeans十分简单,我下载了jdk-7u1-nb-7_0_1-linux-ml.sh,直接在终端输入 sh jdk-7u1-nb-7_0_1-linux-ml.sh安装的向导就会启动,你只要选择JDK和netbeans安装的目录,向导就自动替你安装jdk和netbeans,…

在带有组合框的值列表的下拉列表中显示显示属性的子集

组合框值列表(inputComboboxListOfValues)应该是使用LOV的非常流行的ADF Faces组件。 坦白说,这是我最喜欢的值列表方法。 在这篇简短的文章中,我将重点介绍ADF开发人员经常忽略的一项功能。 如果默认情况下定义了LOV,…

Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: jav

报错:Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: jav 原因:1、在对应的xml文件里面 #A#,只写了一个# 2、xml文件里面有多余的字符,如空格等 转载于:https://www.cnblogs.com/zzw3014/p/11316031.html

摆脱困境:在每种测试方法之前重置自动增量列

当我们为将信息保存到数据库的功能编写集成测试时,我们必须验证是否将正确的信息保存到数据库。 如果我们的应用程序使用Spring Framework,则可以为此目的使用Spring Test DbUnit和DbUnit 。 但是,很难验证是否在主键列中插入了正确的值&am…

仅坚持了9天:京东今日宣布暂停火车票代购业务

仅仅只坚持了9天,对于京东商城销售火车票的讨论一直进行着。不论是否具有销售资质,还是变相的收费。到今天下午为止京东商城发表声明暂停火车票代购业务。以下是京东公告全文:尊敬的京东网友:鉴于京东商城火车票代购业务测试期间出…

path.join 与 path.resolve 的区别

1. 对于以/开始的路径片段,path.join只是简单的将该路径片段进行拼接,而path.resolve将以/开始的路径片段作为根目录,在此之前的路径将会被丢弃,就像是在terminal中使用cd命令一样。 path.join(/a, /b) // a/bpath.resolve(/a, /b…

Android IPC系列(一):AIDL使用详解

概述 AIDL可以实现进程间的通信,由于每个进程都是运行在独立的空间,不同的进程想要交互需要借助一些特殊的方式,AIDL就是其中的一种,AIDL是一种模板,因为实际交互过程中,并不是AIDL起的作用,具体…

如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存

在本文中,我将介绍如何使用单例EJB和Ehcache在Java EE中构建简单的参考数据缓存。 高速缓存将在给定的时间段后重置自身,并且可以通过调用REST端点或MBean方法“手动”清除。 这篇文章实际上是在以前的文章的基础上建立的 。 唯一的区别是,我…

深入浅出React Native 1: 环境配置

该教程主要介绍如何用react native来开发iOS,所以首先,你需要有一台mac,当然黑苹果也是可以的~ 创建一个react native的项目只需要安装以下五个组件~~(但....坑爹的是,不FQ的话安装慢成狗呀) 1. 安装 xco…

C#排序算法大全

C#排序算法大全 土人 2004-7-21 一、冒泡排序(Bubble) using System; namespace BubbleSorter { public class BubbleSorter { public void Sort(int[] list) { int i,j,temp; bool donefalse; j1; while((j<list.Length)&&(!done)) { donetrue; for…

Spring实战(前言:Spring容器)

Spring容器&#xff0c;顾名思义是用来容纳东西的&#xff0c;装的就是Bean。Spring容器负责创建、配置、管理Bean。spring容器有两个核心接口&#xff1a;BeanFactory和ApplicationContext接口&#xff0c;后者是前者的子接口。在基于spring的Java EE程序中&#xff0c;所有的…

具有WildFly,Arquillian,Jenkins和OpenShift的Java EE 7部署管道

技术提示&#xff03;54展示了如何Arquillianate&#xff08;Arquillianize&#xff1f;&#xff09;一个现有的Java EE项目并在WildFly在已知主机和端口上运行的远程模式下运行这些测试。 技术提示&#xff03;55展示了当WildFly在OpenShift中运行时如何运行这些测试。 这两个…

《那些年啊,那些事——一个程序员的奋斗史》——88

谁也不知道武总脑袋里面会想些什么。这天早上段伏枥还在发愁如何改进这4.3机器的电源管理的时候&#xff0c;武总突然让自己到会议室开会。 段伏枥还没坐下来的时候&#xff0c;武总推过来一台机器&#xff0c;说:“你看看&#xff0c;这机器怎么样。” 段伏枥定睛一看&#xf…

css浮动(float)及清除浮动的几种实用方法

CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行&#xff0c;并在每行中按从左到右的顺序排放元素。 (2)网页中大部分对象默认是占用文档流…

一台电脑同时添加git和bitbucket两个网站的ssh key

添加第一个ssh key 就不多说了&#xff0c;不懂的可以自己查资料 ssh-keygen -t rsa -C email_1email.com 然后一路enter就好了 假设已经添加好了git的ssh key 。现在要添加bitbucket的ssh key 首先 ssh-keygen -t rsa -C email_2email.com //同一个邮箱也可以 然后指定公钥的…

属性提取器:获取ListView即时更新其元素的最佳方法

这篇文章是关于如何处理JavaFX ListViews和TableViews的&#xff0c;以及这些控件如何得知所包含元素的更改内容。 我想知道为什么在相关书籍中没有找到关于以下模式的任何信息&#xff0c;因为这是一个非常关键的机制。 那里的许多帖子建议通过调用以下命令来强制触发ChangeEv…

基于python语言下的UI自动化测试框架搭建(四)

testsuits:案例执行 创建baidu_search1.py文件&#xff0c;这里会展示两种执行方式&#xff0c;一种是直接调用base_page中封装好的常用操作方法&#xff0c;另外一种是先调用baidu_homepage.py&#xff0c;通过baidu_homepage.py进行处理&#xff0c;再执行对应的案例&#xf…

MVC详解

模型&#xff0d;视图&#xff0d;控制器&#xff08;Modal View Controler&#xff0c;MVC&#xff09;是Xerox PARC在八十年代为编程语言Smalltalk&#xff0d;80发明的一种软件设计模式&#xff0c;至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式&#xff0c…