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库

使用插件的沙箱代码可用@ 编译器 plugintest github仓库

结论

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

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

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

maven 构建增量包

maven 构建增量包_使用Maven进行增量构建相关推荐

  1. mvn 打包可执行包_用Maven打包发布可执行的jar包

    项目有个需求,要把当前项目的代码和依赖打包成一个jar包,再把jar包和一些相关文件一起打包成一个tar 这里用到了两个插件,shade 和assembly,shade负责生成jar包,assembl ...

  2. workbook需要引入的包_解决Maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题

    Java项目,导入Excel数据功能,第一次使用POI,一开始就遇到了小麻烦! Maven项目引用POI的jar包 org.apache.poi poi 3.14 引入后XSSFWorkbook依旧无 ...

  3. maven 加入第三方库_关于maven,你还要翻阅多少资料才能整理出这一份完整文档...

    一.介绍 Maven是一款Apache基金会下的项目构建工具,可以用来任何基于Java的项目,遵循约定由于配置的思想,能够大大简化我们工作中繁琐的项目构建.官网地址:http://maven.apac ...

  4. maven创建java项目_使用maven命令行创建java项目

    一.先创建一个quick-start项目: 使用 mvn archetype:generate 进行创建,如果没有指定参数或者项目类型,交互系统首先会询问创建项目的基本类型, 如下所示,默认为类型7. ...

  5. 常用jar包_发布Maven包的正确姿势

    本文介绍如何把自己写的Maven包发布到公开仓库/中央仓库/私有仓库. 当我们使用commons-logging这些第三方开源库的时候,我们实际上是通过Maven自动下载它的jar包,并根据其pom. ...

  6. maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...

    使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴. 1.首先在本地maven位置的配置文件setting.xml(没有 ...

  7. cdh 添加jar包_使用maven下载cdh版本的大数据jar包

    MyEclipse SVN安装方法 方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site ...

  8. maven 打包替换文件_使用Maven打包生成文件 | 学步园

    状况:Maven会自动package一些文件到默认目录,或我们会指定一些文件生成到指定目录.比如一些配置文件,一些脚本. 需求:将这些需要文件打包成一个gz压缩包 方法: 1. 建立assembly文 ...

  9. 构建忽略测试_分类测试以减少构建时间

    构建忽略测试 在继续本文的主要内容之前,让我们先进行一些定义. 单元测试 单元测试是小型的(测试一个用例或一个单元),在内存中运行(不与数据库,消息队列等交互),可重复且快速的测试. 对于我们的对话, ...

最新文章

  1. zabbix 3.2安装部署(一)
  2. php curl viewstate,php curl – 发布asp.net viewstate值
  3. python数字图像处理-图像噪声与去噪算法
  4. TOUGHRADIUS 项目介绍
  5. DATEDIFF 函数使用
  6. powerpc和arm_为什么我喜欢ARM和PowerPC
  7. matlab程序 surf算法,【求大神帮忙,surf算法源代码解析】
  8. SAP License:今天你‘牺牲’了吗?
  9. sass笔记 - 实战中颜色的玩法总结
  10. G.8032协议 ERPS
  11. 电子信息业取得长足发展 效益与质量同步提升
  12. Moo Slidebox
  13. Handler的理解、用法以及运行机制原理
  14. android scala,用scala开发android,用spray-json解析json
  15. jadx学习记录01
  16. Parellel TSP
  17. iOS和Android的app界面设计规范
  18. CSS选择器(select)
  19. 盘点IT行业“中国式合伙人”的离合春秋
  20. 微信小程序支付功能用服务器吗,微信小程序 支付功能 服务器端(TP5.1)实现...

热门文章

  1. E - Flow Gym - 102471E
  2. acwing3132. 食物(BZOJ3028)
  3. 疾病预测和天气分析练习赛
  4. 【学习笔记】无向图、有向图的三元环、四元环计数问题(根号分支+bitset)
  5. 夯实基础项目工程之图论——Uncle Bogdan and Country Happiness,Graph Coloring,How Many Paths?,Array Differentiation
  6. 【CF1100F】 Ivan and Burgers (分治+线性基)
  7. P5056-[模板]插头dp
  8. jzoj6288-旋转子段【优雅的暴力】
  9. 【主席树】更为厉害(P3899)
  10. 初一模拟赛总结(2019.4.13)