Java Maven构建工具中mvnd和Gradle谁更快

目录
  • 1.mvnd 简介
  • 2.Gradle 简介
    • 2.1 Gradle 优点简述
  • 3.Gradle 使用
    • 3.1 更换 Gradle 为国内源
    • 3.2 项目依赖文件对比
    • 3.3 settings.gradle VS build.gradle
    • 3.4 打包项目
  • 4.mvnd
  • 5.性能对比
    • 5.1 Maven 打包性能
    • 5.2 mvnd 打包性能
    • 5.3 Gradle 打包性能
  • 6.扩展:Gradle 打包文件存放目录
  • 总结

前言;

Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体验过 Gradle,那感觉只有两个字“真香”。 前段时间测评了更快的 Maven 构建工具 mvnd,感觉性能挺高的,貌似有了种“没必要再用 Gradle”的感觉了,而本文通过三者的性能对比,告诉你到底谁才是王者。

1.mvnd 简介

mvnd 是 Maven Daemon 的缩写 ,翻译成中文就是 Maven 守护进程。mvnd 是 apache/maven 的一个子项目,它并不是一个全新的构建工具,而是对 maven 的扩展。它内置了 maven,其实现原理是构建了一个或者多个 maven 守护进程来执行构建服务。

2.Gradle 简介

Gradle 是新一代开源的自动化构建工具,具有高效和灵活等诸多优势,广泛用于 Java 系的开发流中。

2.1 Gradle 优点简述

  • 语法体验更好,可以摆脱 XML 这种繁琐的配置。
  • Gradle 构建速度很快,它可以通过重用先前执行的输出,仅处理已更改的输入且通过并行执行任务来快速完成构建。
  • 可以在脚本里面直接写逻辑,灵活度体验比 Maven 高。
  • Gradle 是 Android 的官方构建工具,并支持许多流行的语言和技术。
  • 可以直接原生兼容 Maven 的配置,反过来的话 Maven 做不到原生兼容 Gradle。
  • Gradle 版本更新速度很快。

3.Gradle 使用

使用 Idea 我们可以直接创建 Gradle 项目,以 Spring Boot 项目的创建为例,

如下图所示: 

选择第 3 个 Gradle Project 项目即可。

Gradle 和 Maven 一样,无需安装,只需要使用 Idea 提供的默认插件就行。

3.1 更换 Gradle 为国内源

为了更快的下载(第三方 jar 包)我们可以配置一下 Gradle 为国内源,首先打开用户目录下的 .gradle 文件夹,创建一个 init.gradle 文件,

如下图所示: 

 添加如下配置:

allprojects {
  repositories {
    maven {
      url 'https://maven.aliyun.com/repository/public/'
    }
    mavenLocal()
    mavenCentral()
  }
}

以上是设置下载数据源为阿里云。

注意:设置国内源要在创建项目之前,这样在创建 Spring Boot 项目时就可以直接使用国内数据源了,这样才能加速项目的创建和初始化。

设置了国内源之后,开始创建 Gradle 版本的 Spring Boot 项目,和 Maven 的创建方式类似,这里就不再赘述了,最终创建好的 Spring Boot 项目如下: 

 可以看出 Gradle 项目的目录和 Maven 项目的目录几乎是一致的,以下是 Maven 项目的目录: 

3.2 项目依赖文件对比

Maven 项目的依赖配置文件是 pom.xml,而 Gradle 项目的依赖文件是 settings.gradle 和 build.gradle。

3.3 settings.gradle VS build.gradle

settings.gradle 文件是 gradle 项目的总体配置文件,一般会把子项目中通用的一些配置放在这个文件中,有点类似于 maven 的 parent pom 文件,而 build.gradle 文件则是针对单个项目的具体配置,我们主要使用的是 build.gradle 文件

build.gradle 配置内容如下:

plugins {
    id 'org.springframework.boot' version '2.5.8'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

从上述的配置文件可以看出,相比于 pom.xml 中的内容,build.gradle 还是要简洁很多的,它们的对比如下图所示: 

3.4 打包项目

Gradle 和 Maven 打包项目类似,都是在 Idea 右侧点击即可生成,Maven 打包项目如下图所示: 

 对应 Gradle 的打包如下: 

4.mvnd

mvnd 具有以下优点:

  • 用于运行构建的 JVM 不需要每次构建都重新启动。
  • 持有 Maven 插件类的类加载器在多个构建中会被缓存。 因此,插件 jar 文件只被读取和解析一次。(快照版本的 Maven 插件不会被缓存)
  • JVM 中即时(JIT)编译器生成的本地代码也被保留,与常规 Maven 相比,JIT 编译所花费的时间更少。在重复构建期间,JIT 优化的代码立即可用,这不仅适用于来自 Maven 插件和 Maven Core的代码,也适用于所有来自 JDK 本身的代码。

mvnd 构建了一个或者多个 maven 守护进程,使用了全新的 VM 引擎,并添加了缓存及 JIT 优化,从而大大的提高了 maven 项目的构建速度

5.性能对比

接下来创建两个新的 Spring Boot 2.5.8 + Java 8 测试打包的性能,具体测试结果如下。

5.1 Maven 打包性能

Maven 首次打包所花费的时间是:6.524 秒。

5.2 mvnd 打包性能

mvnd 首次打包所花费的时间是:4.832 秒,相比于 Maven 性能提升了 135%。

5.3 Gradle 打包性能

Gradle 首次打包所花费的时间是:1.560 秒,相比于 Maven 性能提升了 418%,相比于 mvnd 性能提升了 300%。

6.扩展:Gradle 打包文件存放目录

Gradle 打包的文件存放在“项目根路径\build\libs”下,如下图所示: 

总结

虽然 mvnd 的目标是借鉴 Gradle 技术提供更快的 Maven 构建,但通过本文的测试发现,Gradle 打包的性能依然是最高的,相比于 Maven 性能提升了 418%,相比于 mvnd 性能提升了 300%,并且 Gradle 的配置文件更加的简单、易读,依然是最值得推荐的项目构建工具。​

到此这篇关于Java Maven构建工具中mvnd和Gradle谁更快的文章就介绍到这了,更多相关Maven构建工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java的项目构建工具Maven的配置和使用教程

    一.Maven是什么 Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译.测试.发布.文档自动化, 大大减轻了程序员部署负担. 二.安装Maven 安装maven非常简单,访问Maven官方页下载即可:http://maven.apache.org/download.cgi 下载完后配置M2_HOME环境变量, 然后终端运行mvn --version, 看到正确的输出提示,Maven就安装完成了. 三.Maven基本概念 Maven的核心思想是POM, 即Project

  • IDEA+Maven搭建JavaWeb项目的方法步骤

    目录 前言 1. 项目搭建 2. 配置项目 添加web部署的插件 3. 项目运行 使用Tomact插件运行项目 4. 注意事项 前言 本章节主要内容是描述如何使用maven构建javaweb项目 Maven依赖仓库: https://mvnrepository.com/ Tomcat7插件的命令: https://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/plugin-info.html 1. 项目搭建 选择maven模板

  • Java Maven settings.xml中私有仓库配置详解

    目录 Maven setting中私有仓库配置浅析 简单maven配置 mirrors profile repositories 总结 Maven setting中私有仓库配置浅析 最近遇到过不少这样那样的问题,曾经做过maven的分享,但是发现当时部分内容还是太想当然了,下面经过尝试后简单总结下: 首先几个逻辑: pom>启用的profile>maven原有配置 mirror配置mirrorOf和id匹配优先 简单maven配置 一般大家的配置(略去无关私有仓库配置)都是这样的 <mi

  • Java maven详细介绍

    目录 maven 什么是maven 仓库的种类 仓库的配置 本地仓库配置 私服配置 中央仓库配置 maven标准目录结构 常用命令 maven项目的生命周期 pom.xml 依赖适用域 总结 maven 什么是maven Maven 是一个项目管理工具,最主要的作用就是管理jar包,他可以把jar统一放到仓库中,项目直接引用即可,而不用在每个项目里都放jar包.同时maven也可以对项目进行构建编译等 一个Maven项目里会有一个pom.xml,他负责管理该项目的jar包的引用 Maven安装目

  • 如何使用gradle将java项目推送至maven中央仓库

    目录 一.注册Sonatype账号申请创建项目 二.等待Sonatype申请批复 三.生成GPG 四.配置gradle 五.Sonatype将项目同步至Maven中央仓库 一.注册Sonatype账号申请创建项目 到链接:https://issues.sonatype.org/注册一个账号. 创建点击顶部导航栏的 create 创建项目 如上填写,注意的是group id我这里使用的是gitee的二级域名地址,这个域名必须是真实的,与project url中的一致.或者自己有一个域名按照提示的链

  • Java开发druid数据连接池maven方式简易配置流程示例

    目录 1.pom.xml文件引入druid和数据库连接jar包 2.jdbc.properties配置 3.ibatis-config.xml关于mybatis的参数配置 4.spring-mybatis.xml整合文件配置 5.web.xml配置检测访问 禁止访问的ip 6.根据需要配置各类监控Spring-mvc.xml 7.可选安全的加密操作 数据库加密 8.访问方式 1.pom.xml文件引入druid和数据库连接jar包 <properties> <druid.version&

  • java maven项目如何读取配置文件信息

    目录 maven项目读取配置文件信息 主类 配置文件 pom文件 控制台运行 jar命令运行 maven工程读取resources配置文件的正确姿势 maven项目读取配置文件信息 目录结构 主类 App.java package com.tomy.hive; import java.io.*; import java.util.Properties; /** * Hello world! * */ public class App { private static String JDBC_UR

  • Java Maven构建工具中mvnd和Gradle谁更快

    目录 1.mvnd 简介 2.Gradle 简介 2.1 Gradle 优点简述 3.Gradle 使用 3.1 更换 Gradle 为国内源 3.2 项目依赖文件对比 3.3 settings.gradle VS build.gradle 3.4 打包项目 4.mvnd 5.性能对比 5.1 Maven 打包性能 5.2 mvnd 打包性能 5.3 Gradle 打包性能 6.扩展:Gradle 打包文件存放目录 总结 前言; Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体

  • Maven构建忽略测试失败的解决方案

    目录 Maven构建忽略测试失败 在Maven项目的pom文件中进行设置 Maven执行单元测试失败后继续 两个办法可以解决这个问题 Maven构建忽略测试失败 在Maven构建过程中,测试是其生命周期的一部分,每一个构建过程都会执行项目中的测试用例,如果遇到一个测试失败,默认会停止当前的构建. 如果遇到测试失败时,依然希望继续构建项目,那么需要设置surefire插件的testFailureIgnore属性为true. 在Maven项目的pom文件中进行设置 <project>     [.

  • 浅谈Java循环中的For和For-each哪个更快

    目录 for-each实现方法 基准测试 原因分析 结论 对于Java循环中的For和For-each,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有两种方法.一个是最基本的for循环,另一个是jdk5引入的for each.通过这种方法,我们可以更方便地遍历数组和集合.但是你有没有想过这两种方法?哪一个遍历集合更有效? for-each实现方法 For-each不是一种新语法,而是Java的语法糖.在编译时,编译器将此代码转换为迭代器实现,并将其编译为字节码.我们可以通过

  • 现代高效的java构建工具gradle的快速入门

    目录 和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin.Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等.与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构建周期.更多有关Maven的知识,读者可以访问Maven官网,或者可以参考笔者写的Maven学

  • java项目构建Gradle的使用教程

    目录 一.相关介绍 二.安装 三.IED中的使用 1.IDEA 2.Eclipse 四.问题说明 一.相关介绍 Gradle是一个好用的构建工具 ,使用它的原因是: 配置相关依赖代码量少,不会像maven一样xml过多 打包编译测试发布都有,而且使用起来方便 利用自定义的任务可以完成自己想要的功能 二.安装 下载地址http://services.gradle.org/distributions/  ,下载你所需要对应的版本,我这里下载的是gradle-4.7-bin.zip.下载后解压到你想要

  • Maven实现项目构建工具

    目录 1.Maven介绍 1.1Maven是什么 1.2为什么要使用maven 2.Maven安装 2.1下载Maven: 2.2解压并配置 2.3编辑Maven环境变量 3.Maven配置 3.1仓库类型 3.2本地仓库配置 3.3远程镜像配置 4.Maven常用命令 4.1 通过命令来构建项目 4.2 对项目进行打包 4.3 将项目安装到本地仓库 1.Maven介绍 1.1Maven是什么 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件

  • 【IntelliJ IDEA】Maven构建自己的第一个Java后台的方法

    本文介绍了Maven构建自己的第一个Java后台的方法,分享给大家,具体如下: 1.知识后顾 关于如何运用Maven构建自己的第一个项目,上期我已经详细的讲解过了,上篇链接:今天我以SpringMvc,Mybatis框架搭建一个属于你自己的Java后台. 2.必要准备 ①IntelliJ IDEA,Maven环境搭好 ②熟悉掌握MyBatis,SpringMVC等框架 ③mysql数据库的创建 3.整体架构布局 4.具体步骤 ①在pom.xml中配置工程要使用的jar包 <?xml versio

  • 在Docker中更快地构建Maven项目

    目录 一. 概述 二. 常规多阶段构建镜像 三. 使用 Buildkit 构建镜像 四. 使用依赖分层的方式构建镜像 五. 在 Buildkit 构建期间使用卷挂载 六. 使用 Maven 守护进程构建镜像 七. 结论 参考文章 一. 概述 本文将通过如下几个方式来构建 docker 镜像,通过记录每种方式的构建时间,从而得到在 Docker 中构建 Maven 项目最快的方式: 常规多阶段构建镜像 使用 Buildkit 构建镜像 使用依赖分层的方式构建镜像 在 Buildkit 构建期间使用

随机推荐