Gradle下载安装配置以及与Maven用法对比


这篇博文来讲解下Gradle 如何下载安装和配置顺便比较下和Maven 用法的不同之处.

1.1 Gradle 是什么?

Gradle 和 Maven 一样,都是一个项目依赖管理构建工具。

那为什么我们还要放弃Maven 改用Gradle 呢?

带着问题的答案我们来到了Gradle 官网,相信你会看到这样的界面:
在这里插入图片描述
翻译成中文就是

从移动应用程序到微服务,从小型创业公司到大型企业,Gradle可以帮助团队更快地构建,自动化和交付更好的软件。

下面还有一张图:
在这里插入图片描述

  • Gralde可以构建一切:
    • 支持Java,C++,Python或自己开发的语言
    • 用于在任何平台上部署的软件包。
    • 进行单仓库或多仓库。
    • 并依靠Gradle无与伦比的多功能性来构建所有组件。
  • Gradle可以自动化一切
    • 使用Gradle丰富的API和成熟的插件和集成生态系统来实现自动化方面的雄心勃勃。
    • 从头到尾对您的软件交付进行建模,集成和系统化。
  • 更快地交付
    • 用优雅,快速的构建来扩展开发。
    • 从避免编译到高级缓存等,我们不懈地追求性能,因此您的团队可以不断交付。

上面介绍了一些它的优点,接下来我们看看都谁在使用他们。
在这里插入图片描述
资料来源: top 20 open-source projects

我们可以看到著名的一些开源项目都在使用Gradle.

除此之外,主流的IDE 也都支持Gradle
在这里插入图片描述
另外,关于用户的好评也是不断,无论是Netflix 的高级开发工程师还是领英的高级工程师管理者都认为它很不错。
在这里插入图片描述

1.2 Gradle 如何安装

好了夸完了,我们来看看怎么安装Gradle.

当前Gradle 的最新版本是6.3, 关于下载方式根据不同操作系统不尽相同。

Gradle 官方下载地址https://gradle.org/releases/
在这里插入图片描述
这里提供了二进制和完整版下载,binary-only 是只包含二进制文件,complete 除了二进制之外还包括示例和文档。在这里插入图片描述

关于两者的使用建议:

  • 如果是自己的本地电脑建议安装complete。complete 包含了doc 文档和src源码。
  • 如果是Linux 服务器,建议选择安装 binary-only。 binary-only只包含二进制文件的压缩包,因为Linux服务器磁盘空间是有限的,应该尽可能少的存放。

1.2.1 Windows 如何下载安装

Windows 平台比较下载安装比较简单,直接图形化界面下载压缩包,然后配置环境变量即可。

  • 新建配置环境变量
GRADLE_HOME
C:/app/gradle/gradle-6.3
  • 追加到PATH 环境变量
${GRADLE_HOME}/bin;

1.2.2 Mac OSX 如何下载安装

Mac OSX 一般来说操作系统自带了HomeBrew 包管理器,因此安装一般使用包管理器方式进行安装。

安装命令如下所示:

brew install gradle

1.2.3 Linux Centos7 如何下载安装

  • 进入用户软件安装目录
cd /usr/local/
  • 创建gradle文件夹
mkdir /usr/local/gradle
  • 通过X-FTP 将 gradle-6.3 文件夹上传到/usr/local/gradle 文件夹下

  • 最终完整路径

/usr/local/gradle/gradle-6.3
  • 配置环境变量

值得注意的是,不要直接在X-Shell 上使用export 命令配置环境变量,因为这样只针对当前进程有效,下次再次打开就失效了。

因此正确的做法是编辑 /etc/profile 文件,这种修改是系统级别的,所有用户有效。

  • 打开并编辑 /etc/profile 文件输入如下命令:
vi /etc/profile
  • 在文件最后一行追加
export GRADLE_HOME=/usr/local/gradle/gradle-6.3
export PATH=$PATH:$GRADLE_HOME/bin
  • 增加执行权限
    一般情况下,默认刚配置的bin目录是没有执行权限的,因此需要如下命令授权。
chmod u+x /usr/local/gradle/gradle-6.3/bin/*
  • 保存并更新配置文件
source /etc/profile

Linux系统添加、修改、删除PATH环境变量

1.3 Gradle 验证是否安装成功

安装完成后我们一般需要验证我们的安装是否成功。

不管使用哪种方式进行安装,最终都可以输入命令验证是否安装成功

gradle -v

命令执行后如下图所示:
在这里插入图片描述

1.4 Gradle 使用条件

Gradle 不管运行在哪个系统都需要安装JDK 或JRE 支持,建议最好安装JDK 8+ 版本

验证JDK 是否输入如下命令

java -version

如果运行成功,输出如下内容
在这里插入图片描述在这里插入代码片

1.5 Gradle VS Maven

接下来我们针对Gradle 和Maven 做一个对比。

1.5.1 关于依赖管理

我们知道在Maven 中,拥有.m2 文件夹,所有的依赖都会默认下载到这个文件夹中。

/Users/zhaoqingfeng/.m2/repository/

在Gradle 中同样拥有.gradle 文件夹,所有的依赖都会下载到这个文件夹中。

/Users/zhaoqingfeng/.gradle/caches/modules-2/files-2.1

1.5.2 关于生命周期

  • maven 的生命周期
  • clean 清理/target 文件夹下的资源
  • compile 编译下载依赖
  • test 执行JUnit 测试
  • package 将项目打包成jar 或war
  • verify 通常包括单元测试,任何静态分析任务(如Checkstyle)和其他任务
  • install 安装到Maven本地仓库
  • deploy 发布到远程仓库
  • Gradle 的生命周期
    在这里插入图片描述

build 是为项目下载关联依赖

1.5.3 如何将一个Maven项目转换成Gradle项目

将现有的Maven构建自动转换为Gradle方法非常简单只需要输入如下命令即可

gradle init

1.5.4 Gradle 如何下载依赖?

maven中需要输入如下命令为项目安装依赖:

mvn install

Gradle 中为项目下载依赖则需要输入如下命令:

gradle build

1.5.5 Gradle 如何声明依赖?

接下来我们学习下如何使用Gradle 声明各种类型的依赖。

1.5.5.1 Gradle 如何声明Compile范围依赖

之前的Maven 是这么声明一个依赖的
pom.xml 部分配置示例如下

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.1</version>
</dependency>

build.gradle 部分配置示例如下:

implementation 'log4j:log4j:1.2.12'  

当然可能你还看过其他一些旧版本的其他写法,比如
旧版本写法一:

compile group: 'org.apache.logging.log4j', name: 'log4j-core',version: '2.13.1'

旧版本写法二:

dependencies {
    compile 'log4j:log4j:1.2.12'
}
1.5.5.2 Gradle 如何声明Runtime范围依赖

在maven 中,我们引入一个运行时有效的依赖是这么操作的。

         <!-- added MySQL support -->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <scope>runtime</scope>
         </dependency>

在gradle 中如果是普通运行时依赖需要这么做:

dependencies {
     runtimeOnly 'mysql:mysql-connector-java'
}

如果是仅用于测试范围的运行时依赖则需要这么做

dependencies {
     testRuntimeOnly 'mysql:mysql-connector-java'
}
1.5.5.3 Gradle 如何声明测试依赖

如果是测试和编译范围的依赖

dependencies {
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
1.5.5.4 Gradle 如何声明排除依赖

在Maven中声明排除依赖是这么做的:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

在Gradle中声明测试依赖需要这么做:

dependencies {
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
	    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}
1.5.5.5 Gradle 如何声明provided依赖

在maven中

<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>

在Gradle中则是

providedCompile group: 'javax.servlet', name: 'servlet-api', version: '2.5'

如果只是在运行范围内的provided依赖

providedRuntime group: 'javax.servlet', name: 'servlet-api', version: '2.5'

1.5.6 Gradle 如何声明插件

maven中声明插件是这么做的

 <plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.1.0</version>
</plugin>

gradle 声明插件方式比较简单直接:

plugins {
    id 'java'
    id 'com.google.cloud.tools.jib' version '1.8.0'
}

1.5.7 Gradle如何配置仓库镜像

一个完整示例如下:
build.gradle

plugins {
    id 'java'
    id 'org.jetbrains.intellij' version '0.4.18'
}

group 'com.xingyun'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    maven {
        url "https://maven.aliyun.com/repository/public/"
    }
    //default is https://repo.maven.apache.org/maven2/
    mavenCentral()
    //default is https://jcenter.bintray.com/
    jcenter()
    //default is https://dl.google.com/dl/android/maven2/
    google()
    //customize repository
    maven {
        url "https://maven.aliyun.com/repository/public/"
    }
    maven {
        url "https://maven.springframework.org/release/"
    }
    maven {
        url "https://maven.restlet.com/"
    }
//    mavenLocal()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

1.5.8 Gradle 如何配置多模块

在maven中配置多模块项目是这么配置的

<modules>
    <module>simple-weather</module>
    <module>simple-webapp</module>
</modules>

在Gradle中则需要这么配置

rootProject.name = 'simple-multi-module'  
include 'simple-weather', 'simple-webapp' 

1.5.9 Gradle 如何为插件配置参数?

在maven中为插件配置参数是这么做的

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>2.17</version>
  <executions>
    <execution>
      <id>validate</id>
      <phase>validate</phase>
      <configuration>
        <configLocation>checkstyle.xml</configLocation>
        <encoding>UTF-8</encoding>
        <consoleOutput>true</consoleOutput>
        <failsOnError>true</failsOnError>
        <linkXRef>false</linkXRef>
      </configuration>
      <goals>
        <goal>check</goal>
      </goals>
    </execution>
  </executions>
</plugin>

在gradle中则需要这么做

checkstyle {
    config = resources.text.fromFile('checkstyle.xml', 'UTF-8')
    showViolations = true
    ignoreFailures = false
}

1.6 总结

Gradle 比Maven 好处有三点:

  • 高度可定制化:Gradle高度可定制化和扩展,可以完成更多更复杂的自动化脚本任务。
  • 更快:编译构建速度更快,据官网介绍Gradle比Maven快了2-10倍
  • 更强大:Gradle是Android的官方构建工具,并支持许多流行的语言和技术,超过二十多个顶级开源项目都在使用。

本篇完~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客星云

谢谢认可,希望对你的学习有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值