1. Gradle安装

1.1 下载

下载地址:
https://services.gradle.org/distributions/
要根据开发工具选择对应版本,例如idea 2018,gradle只能选择5.7以下版本

1.2 配置环境变量

新建环境变量 GRADLE_HOME,即E:\dev\gradle-5.6.4

image.png

修改环境变量 Path,即追加 %GRADLE_HOME%\bin

image.png

设置本地仓库目录
GRADLE_USER_HOME=D:\gradle\repo
验证:
gradle -v

image.png

1.3 Idea配置gradle

image.png

1.4 仓库下载地址全局配置

在gradle安装目录下的init.d目录下创建init.gradle
E:\dev\gradle-5.6.4\init.d
添加全局仓库配置后,在gradle工程不需要再配置依赖包下载地址

image.png

init.gradle配置文件

2. Gradle 使用

2.1 Gradle下载的依赖jar包路径位置

GRADLE_USER_HOME/caches/modules-2/files-2.1

2.2 Gradle 强制依赖

在build.gradle中添加如下配置:

configurations.all {
    resolutionStrategy {
        force 'com.github.bumptech.glide:glide:4.2.0'
        force 'com.github.bumptech.glide:compiler:4.2.0'
    }
}

其他方式:

compile('com.squareup.okhttp:okhttp-mt:2.5.0') {
     force = true
}

2.3 Gradle 移除依赖

1.直接在configuration中排除

configurations {
    compile.exclude module: 'commons'
    all*.exclude group: 'org.gradle.test.excludes', module: 'reports'
}

2.在具体的某个dependency中排除

dependencies {
    compile("org.gradle.test.excludes:api:1.0") {
        exclude module: 'shared'
    }
}

2.4 Gradle mybatis逆向工程

参考:
https://segmentfault.com/a/1190000013534059
https://www.jianshu.com/p/57ba8e9fccca

1、build.gradle配置

buildscript {
    ext {
        //spring boot 版本
        bootVersion = '2.3.2.RELEASE'
    }

    //springboot gradle插件配置
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}")
        // mybatis-generator 插件路径
//        classpath "gradle.plugin.com.arenagod.gradle:mybatis-generator-plugin:1.4"
        classpath "gradle.plugin.com.thinkimi.gradle:mybatis-generator-plugin:2.2"
    }
}

//引入 mybatis-generator 插件
//apply plugin: "com.arenagod.gradle.MybatisGenerator"
apply plugin: "com.thinkimi.gradle.MybatisGenerator"

引入mybatis-generator-plugin,上面两个插件都可以,第一个插件比较旧2017年的,第二个插件有继续维护

2、Mybatis所需包引入,需要用mybatisGenerator引入,否则执行逆向工程时,会报找不到包错误

//逆向工程所需jar
mybatisGenerator 'mysql:mysql-connector-java:8.0.12'
//mybatis-generator core 
mybatisGenerator group: 'org.mybatis.generator', name: 'mybatis-generator-core', version:'1.3.7'
// https://github.com/itfsw/mybatis-generator-plugin
mybatisGenerator group: 'com.itfsw', name: 'mybatis-generator-plugin', version:'1.3.8'
mybatisGenerator group: 'tk.mybatis', name: 'mapper', version:'4.1.5'

3、指定generator xml位置

configurations {
    mybatisGenerator
}
// mybatis-generator.xml 配置路径
//这里会遇到个问题:MyBatis Generator 通过xml生成,有日志但是没有生成文件成功的问题, 
//原因:mac下是找不到 ./src 路径的,需要全路径,如下配置。windows则为src/main/resources/mybatis-generator.xml
mybatisGenerator {
    verbose = true
    // 不覆盖
    overwrite = false
    configFile = 'src/main/resources/mybatis-generator.xml'
}

4、执行mbGenerator

image.png

5、完整配置文件

application.yml配置文件

build.gradle配置文件

mybatis-generator.xml配置文件

mybatis-generator-comment.ftl配置文件

3. 常见错误

3.1 Gradle springboot 多模块打包错误

gradle springboot 多模块,在父模块执行bootJar,报错Main class name has not been configured and it could not be resolved

解决如下: 在父模块build.gradle文件里添加

bootJar {
    enabled = false  // 默认不需要打可执行jar包
}

子模块如果不需要打成可执行jar包,在子模块的build.gradle配置文件中添加以上配置 image.png

子模块打jar包公共配置,在父build.gradle中添加

jar { enabled = true}

image.png

参考:
https://www.jianshu.com/p/439a8b6a7617
https://blog.csdn.net/qq_43813937/article/details/106869813
https://blog.csdn.net/zekeTao/article/details/79525200
https://blog.csdn.net/chuxia5636/article/details/100684220

3.2 Gradle lombok使用错误

链接:https://www.orchome.com/1621 1、确认idea安装了lombok插件 2、Gradle配置文件添加如下配置

    annotationProcessor 'org.projectlombok:lombok:1.18.10'
    compile 'org.projectlombok:lombok:1.18.10'
//    testCompileOnly 'org.projectlombok:lombok:1.18.10'
//    testAnnotationProcessor 'org.projectlombok:lombok:1.18.10'

如果不添加annotationProcessor ,打包会报错,找不到get、set方法

3、在Settings设置页面,我们点击Build,Execution,Deployment –> 选择Compiler–> 选中Annotation Processors,然后在右侧勾选Enable annotation processing即可

image.png

3.3 Idea 无法启动gradle项目

检查build tools>Gradle>Runner Delegate IDE有没有打勾,有打勾去掉,就可以正常启动项目

image.png

4. 常见问题

4.1 Gradle buildScript

在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码:

buildScript {
    repositories {
         mavenCentral()
    }
}
 
repositories {
     mavenCentral()
}
buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。

buildscript代码块中的repositories和dependencies的使用方式与直接在build.gradle文件中的使用方式几乎完全一样。
唯一不同之处是在buildscript代码块中你可以对dependencies使用classpath声明。该classpath声明说明了在执行其余的build脚本时,
class loader可以使用这些你提供的依赖项。这也正是我们使用buildscript代码块的目的。