您是否真的要加快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,…

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

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

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

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

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

添加第一个ssh key 就不多说了,不懂的可以自己查资料 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的,以及这些控件如何得知所包含元素的更改内容。 我想知道为什么在相关书籍中没有找到关于以下模式的任何信息,因为这是一个非常关键的机制。 那里的许多帖子建议通过调用以下命令来强制触发ChangeEv…

MVC详解

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

ES6之命令妙用

很多人都听说过ES6(也就是ECMAScript的新一代标准)并且对她充满了向往,下面通过一个ES6中小知识点——let命令,来解开她的神秘面纱,让大家初步认识一下ES6的语法规范。let命令属于ES6中的一个基本语法,与原…

VUE-搜索过滤器

先看看效果 首先引入 <script src"https://cdn.jsdelivr.net/npm/vue"></script> HTML部分 <div id"app"><input v-modelsearch /><ul v-if"searchData.length > 0"><li v-for"item in searchData&quo…

使用spring-session外部化Spring-boot应用程序的会话状态

Spring-session是一个非常酷的新项目&#xff0c;旨在提供一种更简单的方法来管理基于Java的Web应用程序中的会话。 我最近在spring-session中探索的功能之一是它支持外部化会话状态的方式&#xff0c;而无需费心诸如Tomcat或Jetty之类的特定Web容器的内部。 为了测试spring-s…

使用纯HTML和OmniFaces构建动态响应的多级菜单

最近&#xff0c;我不得不使用JSF 2.2创建一个响应式多级菜单。 要求&#xff1a;菜单应&#xff1a; 从后端使用动态结构创建 反应灵敏&#xff0c;例如对桌面和移动设备友好 有带有导航链接的子菜单项 支持触摸事件 支持键盘辅助功能 PrimeFaces的菜单不是一个选择。 实…

Membership学习(三)Membership Providers介绍[xgluxv]

本来想在第三篇文章里介绍一下 Membership的类的&#xff0c;不过现在中文msdn也出来了&#xff0c;所以就不写了&#xff0c;&#xff0c;直接到介绍Membership Providers。 Membership Providers提供了Membership数据源和服务之间的所有接口&#xff0c;在Asp.net2.0中…

Servlet技术

----Servlet是用Java语言编写的应用到Web服务器端的扩展技术&#xff0c;它先于jsp产生&#xff0c;可以方便地对Web应用中的HTTP请求进行处理。在Java Web程序开发中&#xff0c;Servlet主要用于处理各种业务逻辑&#xff0c;他比jsp更具有业务逻辑层的意义。 一。Servlet基础…

文件指针创建失败!File *fp失败

问题记录&#xff1a;项目是在所里边的vs2010上创建的&#xff0c;正常&#xff01;在自己的笔记本上使用vs13和19都一直报错&#xff01;指针一直为空&#xff01; 网上查了好久&#xff0c;试了很多方法都没有用&#xff01;最后发现是权限的问题&#xff0c;c盘下边创建不了…

前端开发:小程序--第一步

当我在接到小程序的项目的时候&#xff0c;几乎可以说是一脸懵因为对小程序的概念说实话是不太理解的&#xff0c;或者说理解的不太透彻&#xff0c;但是领导给项目说要完成&#xff0c;那没办法&#xff0c;还是要继续呀。 首先&#xff0c;我就想着先注册一个看看&#xff0…

EasyCriteria已演变为uaiCriteria。 新名称和更多功能

你好&#xff01;你好吗&#xff1f; 我很高兴宣布uaiCriteria的发布&#xff0c;EasyCriteria的演进。 确实需要更改框架名称吗&#xff1f; 是的&#xff0c;可悲的是。 我找到了另一个具有相同名称的框架 &#xff0c;这就是为什么我决定更改名称的原因&#xff08;我不希…

ajax方式下载文件

在web项目中需要下载文件&#xff0c;由于传递的参数比较多&#xff08;通过参数在服务器端动态下载指定文件&#xff09;&#xff0c;所以希望使用post方式传递参数。通常&#xff0c;在web前端需要下载文件&#xff0c;都是通过指定<a>标签的href属性&#xff0c;访问服…

了解Spring Web应用程序体系结构:经典方法

每个开发人员必须了解两件事&#xff1a; 架构设计是必要的。 花哨的体系结构图没有描述应用程序的真实体系结构。 真正的体系结构是从开发人员编写的代码中找到的&#xff0c;如果不设计应用程序的体系结构&#xff0c;最终将得到一个具有多个体系结构的应用程序。 这是否…