使用Maven进行增量构建

这是2020年,如果您要启动任何新的基于Java的项目,则应优先选择gradle,但由于某些原因,如果您仍然对Maven感兴趣,那么您可能会发现这篇文章有用。

Maven Java / scala编译器插件对增量编译提供了不错的支持,但它无法处理一些极端情况,例如

  • 从源文件夹中删除文件时触发编译
  • 不更改代码时跳过单元测试。

大多数情况下,只是为了处理已删除文件的情况
“ mvn全新安装” ,这意味着将遵守完整的代码并执行单元测试。

Scala代码的编译很慢,如果项目包含运行缓慢的测试(如启动Webserver,spark上下文,IO等),则情况会变得更糟。 在许多情况下,等待时间可能是几分钟。

即使代码未更改,我也不考虑浪费的CPU周期来运行测试。

作为一个实验,我从Gradle中吸取了一些想法,并编写了附加的maven插件,该插件可以解决上述问题


1.更改代码并触发完整构建时,清理目标位置。

2.在不更改代码的情况下跳过单元测试执行。

这两个功能都可以帮助大大减少编译时间,因为在大多数情况下,只有很少的模块被更改并且可以使用以前的生成输出。 您可以通过启用此插件来快速构建。

如何使用插件

该插件是在预清理阶段添加的,将以下条目添加到pom.xml并使用“ mvn pre-clean install”
 

<plugin><groupId>mavenplugin</groupId><artifactId>compilerplugin</artifactId><version>1.0-SNAPSHOT</version><executions><execution><id>pre-clean</id><phase>pre-clean</phase><goals><goal>inc</goal></goals></execution></executions> </plugin>

插件代码,请@ compilerplugin GitHub库

使用插件沙盒代码可@ compilerplugintest GitHub库

结论

始终收集有关构建的指标,例如编译所需的时间,测试所花费的时间,包大小,依赖项等。一旦开始进行测量,您将注意到构建的速度很慢,并且还需要与代码相同的爱好。

快速构建是实现连续交付的第一步。

翻译自: https://www.javacodegeeks.com/2020/03/incremental-build-with-maven.html

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

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

相关文章

php删除菜单栏,如何删除WordPress站点健康状态面板和菜单项

下面由WordPress教程栏目给大家介绍删除WordPress站点健康状态面板和菜单项的方法&#xff0c;希望对需要的朋友有所帮助&#xff01;删除 WordPress 站点健康状态面板和菜单项WordPress站点健康功能始于 5.2 版&#xff0c;如不想显示这玩意&#xff0c;可以使用本文的方法删除…

colspan会影响内部单元格宽度失效_电感失效分析

电感失效分析01电感的作用我们通常所说的电感指的是电感器件&#xff0c;它是用绝缘导线(例如漆包线,沙包线等)绕制而成的电磁感应元件。在电路中&#xff0c;当电流流过导体时&#xff0c;会产生电磁场&#xff0c;电磁场的大小除以电流的大小就是电感。电感是衡量线圈产生电磁…

ZeptoN正在将程序放入Java

1.简介 Java编程语言或“ Java”于1995年引入。然而&#xff0c;在近25年的时间里&#xff0c;它增加了最初不是核心语言所具有的功能。 此类功能包括枚举&#xff0c;泛型&#xff0c;对基本C样式功能开关语句的许多增强&#xff0c;断言等。 Java是一种编程语言&#xff0c;随…

Quarkus入门

Quarkus – 一个为OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈&#xff0c;它是从最佳Java库和标准中精制而成的。 –是一个容器优先的框架&#xff0c;针对快速启动时间和低内存消耗进行了优化。 该框架基于许多流行的Java库构建&#xff0c;并且为构建标准RES…

vmware6.5.2序列号_教你如何查询苹果序列号,查询是否为官换机、激活时间等

如何查询你刚买的苹果设备是否为官换机&#xff1f;或想知道它的激活日期&#xff1f;保修时间&#xff1f;那么赶紧收藏本篇教程吧&#xff01;众所周知&#xff0c;在苹果官网查询苹果设备&#xff0c;是查询不到具体的信息&#xff08;比如激活日期、保修日期、是否为官换机…

linux 7启动文件夹在哪里设置密码,RHEL7 or CentOS7 的系统密码如何重置

导读RHEL7 的世界发生了变化&#xff0c;重置 root 密码的方式也一样。虽然中断引导过程的旧方法(init/bin/bash)仍然有效&#xff0c;但它不再是推荐的。“Systemd” 使用 “rd.break” 来中断引导。让我们快速浏览下整个过程。介绍目的在 RHEL7/CentOS7/Scientific Linux 7 中…

里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?

目录单一职责原则&#xff1a;开闭原则&#xff1a;里氏替换原则&#xff1a;单一职责原则&#xff1a;每一个系统中的功能都表示一个职责&#xff0c;这些职责可以映射到模块&#xff08;类&#xff09;中&#xff0c;且尽可能的保证这些类中没有功能上的重复&#xff0c;设计…

联想打印机7256显示更换墨盒_惠普打印机涉嫌垄断?只认自家“昂贵”墨盒,成本太高招架不住...

近日&#xff0c;有人爆料称&#xff0c;所在公司购买的惠普打印机使用原装墨盒时可正常打印&#xff0c;更换其他品牌墨盒后也不能正常使用&#xff0c;因此认为惠普公司有行业垄断的嫌疑。从细节来看&#xff0c;该公司购买了惠普同一型号但不同批次的两台打印机&#xff0c;…

linux mcelog 运行,服务器硬件检测(采用mcelog)

mt 内存监控&#xff1a;mcecheck.pyraid监控&#xff1a; check-raidmcelog 是 x86 的 Linux 系统上用来检查硬件错误&#xff0c;特别是内存和CPU错误的工具。安装方式yum install mcelog运行mcelog查看日志方式/var/log/mcelogMCE 0HARDWARE ERROR. This is NOT a software …

动手选择值

由于冠状病毒的存在&#xff0c;可选的东西在空中&#xff0c;一切都变得可选&#xff0c;例如可选的公共聚会&#xff0c;可选的在家工作&#xff0c;可选的旅行等。 我现在是时候谈论处理NULL引用的软件工程中真正的“ 可选 ”了。 托尼霍尔&#xff08;Tony Hoare&#xf…

wincc历史数据库_WinCC系统的基本功能介绍——自动化工程师必备

写在面前前面讲解了西门子的TIA Portal Wincc, Wincc Classic和Wincc OA (一文带你了解西门子Wincc),介绍了西门子的超大型/分布式SCADA系统Wincc OA(初识西门子Wincc OA——超大型/分布式SCADA)&#xff0c;还介绍了Wincc Classic的典型架构和选型指南(WinCC V7.5典型架构及选…

apache.camel_Apache Camel 2.14中的更多指标

apache.camelApache Camel 2.14将于本月晚些时候发布。 由于正在解决某些Apache基础结构问题&#xff0c;因此存在一些问题。 这篇博客文章讨论的是我们添加到此版本中的新功能之一。 感谢Lauri Kimmel捐赠了骆驼指标组件&#xff0c;我们将其与出色的Codehale指标库集成在一起…

依赖管理和Maven

Maven伟大而成熟。 几乎所有事物都总有解决方案。 您可能在组织项目上遇到的主要情况是依赖管理。 而不是每个项目都没有自己的依赖关系&#xff0c;您需要一种集中化的方式来继承那些依赖关系。 在这种情况下&#xff0c;您可以在父舞会上声明托管依赖项。 在我的示例中&…

linux ps 代码,Linux ps命令详解(示例代码)

ps命令是Process Status的缩写, 用来列出系统中当前运行的那些进程. ps命令列出的是当前那些进程的快照&#xff0c;就是执行ps命令的那个时刻的那些进程&#xff0c;如果想要动态的显示进程信息&#xff0c;就可以使用top命令ps常见命令参数********* simple selection ******…

Apache Kafka消费者再平衡

消费者重新平衡决定哪个消费者负责某些主题的所有可用分区的哪个子集。 例如&#xff0c;您可能有一个包含20个分区和10个使用者的主题。 在重新平衡结束时&#xff0c;您可能希望每个使用者都从2个分区中读取数据。 如果关闭了这些使用者中的10个&#xff0c;则可能会期望每个…

linux系统ll历史,Linux操作系统原理笔记

在Linux操作系统内核内部&#xff0c;进程是通过一个链表&#xff0c;而且是一个双向链表来管理的。进程描述符&#xff1a;每一个进程都有其描述符&#xff0c;每一个描述符彼此之间都有关联性的。双向链表&#xff1a;一个进程内部可能包含多个线程。上下文切换(Context swtc…

java工程师的终极书单_Java 9 –终极功能列表

java工程师的终极书单这篇文章将针对即将到来的Java 9版本进行更新&#xff0c;新增功能 &#xff08; 最新更新&#xff1a;2014年 9月9日 &#xff09; OpenJDK开发正在加快速度&#xff1a;2014年3月Java 8发布后&#xff0c;我们预计将进入2年的发布周期。 据报道&#xf…

称之为例外?

尽管这是一个与测试和Wiremock有关的Java示例&#xff0c;但它涉及一个更普遍的问题。 我们正在尝试重试Wiremock的verify方法&#xff0c;该方法可能会在我们要检查的端点被命中之前由测试调用。 在这种情况下&#xff0c;我们想在几秒钟后重试一次直到超时。 有趣的是&#…

c语言字符大于等于怎么打,c语言大于等于怎么打?

c语言大于等于怎么打&#xff1f;C语言‘大于等于符号是“>”&#xff1b;“>”是关系运算符用于比较运算。包括大于(>)、小于()、小于等于(<)和不等于(!)六种。注意要在英文的输入状态下写c代码。知识拓展&#xff1a;C语言运算符号指的是运算符号。C语言中的符号…

用c语言编写的源文件经过编译,若没有产生编译错误,则系统将,用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将(??)...

用C语言有产译错拖拉动工:旋是用一种耕机耕作机(件的机具智慧职教作部)驱。编写编译标准是消商品衡量和品价格价值质的直接费者。文件误则单反卡为相机用的最常存储。能给您提网球的(大力拍上量)是供最在击球时&#xff0c;的手的一使你舒服又能域感最个区。的是下列说法正确&a…