Maven-mvnd介绍

Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用。Maven 的缺点是,对于大一点的项目来说,构建太慢了。有时候只能在服务器端完成构建 ,心酸呀。

Gradle 的优点是足够的灵活,构建速度也会更快一点,因为使用了后台进程和缓存机制。Gradle 的缺点是版本迭代速度太快,社区跟不上,对于初学者来说,还是有一定的学习曲线。

所有是否有一种能快速构建Java项目的工具时,今天重点推荐maven-mvnd,是Apache Maven团队借鉴了Gradle和Takari的优点,衍生出来的更快的构建工具,maven的强化版,解决Maven构建慢的问题,又不需要重新学习,懂Maven你就能驾驭Maven-mvnd。

maven-mvnd 特性:

  1. 嵌入 Maven (所以不需要单独安装 Maven);maven 过渡到 maven-mvnd的过程中实现 无缝切换!所以不需要再安装maven或进行复杂的配置更改。
  2. 实际的构建发生在一个长期存在的后台进程中,也就是守护进程。如果没有为构建请求服务的空闲守护进程,则可以并行产生多个守护进程。
  3. 一个守护进程实例可以处理来自 mvnd 客户机的多个连续请求。
  4. 使用 GraalVM 构建的本地可执行文件。与传统的 JVM 相比,它启动更快,使用的内存更少。

这种架构带来的优势有:

  1. 运行实际构建的 JVM 不需要为每个构建重新启动,节省时间。

  2. JVM 中的实时(JIT)编译器生成的本机代码也保留了下来。与 Maven 相比,JIT 编译花费的时间更少。在重复构建过程中,JIT 优化的代码可以立即使用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码。

使用步骤

下载

https://github.com/mvndaemon/mvnd/releases

安装

直接解压。然后配置环境变量:

  1. JAVA_HOME
  2. MAVEN_HOME
  3. MAVEN_MVND_HOME

将 bin 目录添加到 PATH,注意前提条件JAVA_HOME是存在,如果没有配置JAVA_HOME

测试

mvnd -v

使用

在使用上和Maven一样,参数也一致。

Maven 使用 mvn clean package ;使用Maven-mvnd 只需要变成 mvnd clean package 即可,其他同理。

配置修改

为了最小程度的兼容原来的Maven,可以使用原来的 setting.xml

打开 Maven-mvnd 安装目录下 的 /conf/mvnd.properties 文件,在文件最后一行,修改如下:

如果没有配置JAVA_HOME也可以指定Java JDK路径:

maven.settings=F:/javaee/apache-maven-3.6.3/conf/settings.xml

打包对比

# maven 打包命令
mvn clean package '-Dmaven.test.skip=true'
# mvnd 打包命令
mvnd clean package '-Dmaven.test.skip=true'

如果子项目越多,相对速度更快的趋势。总的来说,如果项目模块很多,可以尝试使用 mvnd 进行辅助打包,比如 测试、生产,可以节省很多时间。

最后,如果你要追求高打包效率,使用Gradle也是一种解决方案,可以尝试。最后在项目中推行一种或混合的模式。

新一代Java高性能构建工具Maven-mvnd【实践可行版】的更多相关文章

  1. java项目构建工具Maven

    一.java-maven常用命令 mvn archetype:create 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编 ...

  2. Java项目工程化之项目构建工具Maven

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  3. 项目管理及自动构建工具Maven

    项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...

  4. 构建工具maven

     构建工具maven  =UTF-8''Gradle Effective Implementation Guide.pdf: http://www.t00y.com/file/76854506 b ...

  5. 项目管理构建工具——Maven(基础篇)

    项目管理构建工具--Maven(基础篇) 在前面的内容中我们学习了JDBC并且接触到了jar包概念 在后面我们的实际开发中会接触到很多jar包,jar包的导入需要到互联网上进行就会导致操作繁琐 Mav ...

  6. 项目管理构建工具——Maven(高阶篇)

    项目管理构建工具--Maven(高阶篇) 我们在之前的文章中已经基本了解了Maven,但也仅仅只止步于了解 Maven作为我们项目管理构建的常用工具,具备许多功能,在这篇文章中我们来仔细介绍 分模块开 ...

  7. 着重基础之—构建工具—Maven的依赖管理

    着重基础之—构建工具—Maven的依赖管理 项目构建利器Maven给我们开发人员带来了极大的便利,从繁琐的jar包管理中脱身的程序员终于可以有时间再进入另一个坑了. 我今天要给大家分享的内容是我在实际 ...

  8. 项目构建工具maven的使用方法

    最近在开发javaweb项目中有用到maven,以前并不是很了解,于是学习了一些相关内容,记之共享. 本篇内容在Windows环境下实施,JDK版本使用的1.7.0_79. 一.maven是什么? 简 ...

  9. 自动化构建工具maven

    Maven是目前最流行的自动化构建工具,对于生产环境下多框架.多模块整合开发有重要作用.Maven 是一款在大型项目开发过程中不可或缺的重要工具. 一.什么是构建? 构建并不是创建,创建一个工程并不等 ...

  10. 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

    小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...

随机推荐

  1. linux cd命令的重要用法:cd -,cd ~

    cd命令的作用:进入磁盘的某个目录下. [root@node5 ~]# cd /etc/sysconfig/network-scripts/ [root@node5 network-scripts]# ...

  2. 7.12考试总结(NOIP模拟12)[简单的区间·简单的玄学·简单的填数]

    即使想放弃,也没法放弃最想要的东西,这就是人 前言 这次应该是和 SDFZ 一起打的第一场比赛吧. 然而我还是 FW 一个... 这次考试也有不少遗憾,主要的问题是码力不足,不敢去直面正解,思考程度不 ...

  3. 不好分类的好题Record

    这里装的是一些不太好分类的. problem 1 给你 \(n\) 个序列,第 \(i\) 个序列的长度为 \(m_i\),要求在每个序列中选择一个数,每种选法的代价为选择的 \(n\) 个数之和,请 ...

  4. (二)requests-爬取国家药监局生产许可证数据

    首先访问这个页面 url = 'http://125.35.6.84:81/xk/' 我们的目标是抓取这里的每一个企业的详情页数据,但是可以发现这里只有企业的简介信息,所以这就意味着我们要发送两次ge ...

  5. PasteSpider的集群组件PasteCluster(让你的项目快速支持集群模式)的思路及实现(含源码)

    PasteSpider是什么? 一款使用.net编写的开源的Linux容器部署助手,支持一键发布,平滑升级,自动伸缩, Key-Value配置,项目网关,环境隔离,运行报表,差量升级,私有仓库,集群部 ...

  6. http请求方式-HttpClient 微信退款的接口,需要证书请求 https请求

    http请求方式-HttpClient import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import ...

  7. nacos v2.2 k8s部署启动报错:nacos server did not start because dumpservice bean construction failure. errMsg102, errllsg dataSource or tableName is null

    背景 最近搭建个nacos环境,用的镜像是2.2版本的,yaml如下: nacos-conf apiVersion: v1 kind: ConfigMap metadata: name: nacos- ...

  8. 07-Linux文件权限管理

    文件的类型 Linux的哲学思想:一切皆文件. Linux的文件分为多种类型. 可以通过ll命令查看文件的类型: ll #输出: -rw-------. 1 root root 1266 2月 29 ...

  9. markdown折叠展开代码

    背景 有的时候,我们的代码太多,直接用cout<<"hello";很不方便. 我们可以将代码折叠. 效果 代码 普通代码折叠 <details> <s ...

  10. C++类与对象详解

    什么是类和对象 类和对象的概念 类是对象的抽象,对象是对客观事物的抽象. 用通俗的话来说: 类是类别的意思,是数据类型. 对象是类别下的具体事物. 也就是说: 类是数据类型,对象是变量. 比如: 水果 ...