Gradle 快速入门

前言

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger
种一棵树最好的时间是十年前,其次是现在

絮叨

为啥有这篇文章呢?其实就是小六六自己记录一下自己的学习过程,以前在编译Spring的源码的时候,用的Gradle,我是搞了好久好久,然后听说SpringBoot 也要弃Maven而去了,那我肯定得学习学习Gradle了,至少是得了解了解。所以今天这个就是自己得学习记录拉。

Gradle简介

Gradle是一个开源的自动构建工具,它在设计之初就是为了能够灵活地构建几乎所有类型的应用。以下是他的一些重要特性:

  • 高性能:Gradle使用了缓存机制来加快构建

  • 基于JVM:Gradle是基于JVM的工具,这对于熟悉Java的开发者来说是一件好事,因为你可以使用标准的Java APIs 在你的构建逻辑中,比如自定义的task或插件。这同时也使得Gradle可以轻易地实现跨平台。

  • 声明式(Conventions):Gradle汲取了Maven的长处,以Java项目为例,只要将合适的文件放在合适的地方,应用合适的插件就可以简单地执行构建

  • 扩展性:Gradle具有良好的可扩展性,你可以通过自定义task types或甚至自定义build model来拓展Gradle。例如Android的构建工具就引入了许多新的构建概念例如flavours和build types

  • IDE支持,几个主流的IDE都支持导入Gradle构建并且通过图形化界面的方式与Gradle进行交互。

Gradle优点

  • Gradle集合了Ant和Maven的优点

  • 配置、编译、打包都非常棒

  • 简洁,基于Groovy的紧凑脚本非常方便

  • 灵活,修改现有的构建生命周期,写几行配置就可以了

Gradle下载

  • 先安装并配置好JDK

  • 安装https://gradle.org/install/

  • 下载https://services.gradle.org/distributions/gradle-4.0-all.zip

Gradle安装配置

  • 解压缩gradle-4.0-all.zip,解压的目录请去掉-all目录

  • 配置环境变量GRADLE_HOME=D:\gradle-4.0

  • 配置环境变量PATH=%JAVA_HOME%\BIN;%GRADLE_HOME%\BIN;…

项目结构

其实一看的话 和Maven 大部分还是很像的

  • .gradle文件夹:存放Gradle的缓存,缓存可用于加快构建速度

  • .idea文件夹:Idea生成的,与Gradle无关,略

  • gradle->wrapper:当前版本下gradle文件夹中只含有wrapper文件夹,用于存放GradleWraper的jar包以及配置文件

  • src文件夹:用于存放源代码、资源文件等。这个文件夹不是由Gradle声明,而是由java插件声明

  • build.gradle:根目录下的build.gradle文件,是项目的构建脚本,可以说是Gradle项目最重要的文件

  • gradlew、gradlew.bat:Gradle Wrapper的执行脚本,分别适用于类Unix系统和windows系统

  • settings.gradle:项目的设置文件,最重要的作用是用于设置Multi-Project构建时哪些project参与构建

写一个测试类,然后的话我们发现会生成一个build文件,这个就是编译之后的文件了吧!

初识build.gradle

前面我们说过build.gradle这个文件是构建脚本文件,它的本质是在其中定义了一个project和若干tasks

当我们在命令行中输入gradle build(或gradlew build)命令进行项目构建时,Gradle会自动在当前目录下去寻找build.gradle文件,按照里面定义的脚本进行构建。

以一个小demo为例,我们在一个空目录中新建一个文件build.gradle

task hello {
 doLast {
  println 'Hello world!'
 }
}

在当前目录下打开命令行,输入gradle -q hello,会输出以下结果(注:-q参数是为了不让Gradle的日志打印出来,只让我们输出的字符串显示)

 gradle -q hello
Hello world!

在这个demo中,我们在build.gradle中定义了一个任务hello,并在其中添加了一个动作——打印"Hello wold!",然后当我们在命令行执行gradle -q hello命令时就会执行这个task。

解析一下一个Java项目的配置

plugins {
    id 'java'
    id "checkstyle"
    id "com.github.spotbugs" version "4.3.0"
}

group 'com.github.jsoncat'
version '1.0-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenCentral()
}
test {
    useJUnitPlatform()
}

def jacksonVersion = '2.11.2'
def nettyVersion = '4.1.42.Final'
def slf4jVersion = '1.7.25'
def lombokVersion = '1.18.12'
def junitVersion = 'junit-jupiter-api:5.6.1'
def commonsCodecVersion = '1.14'
def reflectionsVersion = '0.9.12'

dependencies {
    // json解析库:jackson
    compile "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
    // 网络:Netty
    compile "io.netty:netty-all:${nettyVersion}"
    // 日志:slf4j
    compile "org.slf4j:slf4j-api:${slf4jVersion}"
    compile "org.slf4j:slf4j-simple:${slf4jVersion}"
    // 注解扫描:reflections
    compile "org.reflections:reflections:${reflectionsVersion}"
    // 编解码:commons-codec
    compile "commons-codec:commons-codec:${commonsCodecVersion}"
    // 语法糖:lombok
    compileOnly "org.projectlombok:lombok:${lombokVersion}"
    annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
    testCompileOnly "org.projectlombok:lombok:${lombokVersion}"
    testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"
    // 测试:junit5
    testImplementation "org.junit.jupiter:${junitVersion}"
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
    // 接口测试:rest-assured
    testImplementation 'io.rest-assured:rest-assured:4.3.1'
}

apply from: rootProject.file("gradle/git-hooks.gradle")
apply from: rootProject.file("gradle/checkstyle.gradle")
apply from: rootProject.file("gradle/pmd.gradle")
apply from: rootProject.file("gradle/spotbugs.gradle")
  • 最开始定义的是我们的插件

  • 然后是当前项目的一些信息

  • 仓库 我们用的远程中央仓库

  • 单元测试

  • 定义依赖的版本,然后使用这些依赖

  • 引用各种插件

下面的文章写的不错

  • Gradle入门,大家有空自己动手实践下

日常求赞

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是真粉

创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见

六脉神剑 | 文 【原创】如果本篇博客有任何错误,请批评指教,不胜感激 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值