本文转载自微信公众号“Java中文社区”,作者雷哥。转载本文请联系Java中文社区公众号。Maven作为一款经典的项目构建工具,相信已经被很多人长期使用,但如果你体验过Gradle,只有“真香”两个字。前段时间测评了速度更快的Maven构建工具mvnd。感觉性能还是挺高的。似乎有一种“不用再用Gradle了”的感觉。本文将通过三者的性能对比告诉你谁才是王者。一、mvnd简介mvnd是MavenDaemon的缩写,翻译成中文就是Maven守护进程。mvnd是apache/maven的子项目,它不是一个全新的构建工具,而是maven的扩展。它内置了maven,其实现原理是构建一个或多个maven守护进程来执行构建服务。2.Gradle简介Gradle是新一代开源的自动化构建工具,具有高效、灵活等诸多优点,广泛应用于Java系统的开发流程中。Gradle优势简介更好的语法体验,让你摆脱XML的繁琐配置。Gradle构建速度很快,可以通过重用先前执行的输出、仅处理更改的输入以及并行执行任务来快速完成构建。可以直接在脚本中编写逻辑,灵活性体验高于Maven。Gradle是Android官方的构建工具,支持很多流行的语言和技术。可以直接原生兼容Maven的配置,否则Maven无法原生兼容Gradle。Gradle版本更新很快。3.使用Gradle使用Idea,我们可以直接创建一个Gradle工程。以创建SpringBoot项目为例,如下图:选择第三个GradleProject即可。Gradle和Maven一样不需要安装,使用Idea默认提供的插件即可。3.1用国内源替换Gradle。为了下载速度更快(第三方jar包),我们可以将Gradle配置为国内源。首先,打开用户目录下的.gradle文件夹,新建一个init.gradle文件,如下图:添加Configure如下:allprojects{repositories{maven{url'https://maven.aliyun.com/repository/public/'}mavenLocal()mavenCentral()}}上面是设置下载数据源为阿里云。注意:在创建项目前先设置国内源,这样在创建SpringBoot项目时就可以直接使用国内数据源,加快项目的创建和初始化。设置好国内源后,开始创建Gradle版本的SpringBoot项目,与Maven的创建方法类似,这里不再赘述。最终创建的SpringBoot工程如下:可以看到Gradle工程的目录和Maven工程的目录几乎一模一样,下面是Maven工程的目录:图3.2工程依赖文件对比依赖配置文件Maven工程的依赖文件是pom.xml,Gradle工程的依赖文件是settings.gradle和build.gradle。settings.gradleVSbuild.gradlesettings.gradle文件是gradle工程的整体配置文件。一般子项目中的一些常用配置都放在这个文件中,有点类似于maven的父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{extendsFromannotationProcessor}}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()}从上面的配置文件可以看出build.gradle比pom.xml中的内容要简单的多。它们的对比如下图所示:3.3打包项目Gradle和Maven点击Idea右侧生成。Maven打包工程如下图所示:对应的Gradle打包如下:4.使用mvnd时需要安装mvnd。上一篇已经介绍过了,这里不再赘述。详情点击查看:https://juejin.cn/post/70461876149902377325。性能对比接下来新建两个SpringBoot2.5.8+Java8来测试打包性能。具体测试结果如下。5.1Maven打包性能Maven第一次打包耗时为:6.524秒。5.2mvnd打包性能mvnd第一次打包耗时为:4.832秒,比Maven性能提升135%。5.3Gradle打包性能Gradle第一次打包耗时为:1.560秒,比Maven性能提升418%,比mvnd性能提升300%。扩展名:Gradle打包文件存放目录Gradle打包文件存放在“项目根路径\build\libs”下,如下图:总结虽然mvnd的目标是利用Gradle技术提供更快的Maven构建,但是已经通过本文测试发现Gradle打包的性能仍然是最高的,比Maven提升了418%,比mvnd提升了300%,而且Gradle的配置文件更简单易读.它仍然是最推荐的项目构建工具。判断是非在自己,名誉在别人,得失在人数。
