Gradle 入门到放弃

2021-08-09 17:39:27 浏览数 (1)

最近习惯性上班划水,划水嘛,那必然要有一个明确的划算目标,突然想起在面试的时候一个面试官问的一个问题:除了maven 还会些啥? 这我就很蒙,你说的是个啥,不就只有maven嘛?好像有点“初生牛犊不怕虎”的感觉

不慌,我先思考下,我还好像还听过Gradle 可是我不会呀,那今天还是学习一下吧,赶紧先百度下这玩意怎么玩。

官网gradle官网,直接 install 再说,需要 jdk 的环境 ,1.8及以上,不管,这年头瞧不起我还是啥,不会的jdk8的东西还怎么混,虽然确实懂的少,但是jdk8还是早就安排上了, 不瞎扯了,赶紧下载 Download果断 v6.5.1

配置 Gradle

解压配置环境变量:

此电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 新建系统变量

变量名(N):GRADLE_HOME

变量值(V):D:toolsdevelopmentgradle-6.5.1 -- > 当前的路径直接找你的解压路径 ,和maven一样,操作还是很简单的哈

这个时间打开祖传的 cmd 执行gradle -v

有两个目的,其一是检查Gradle是否安装成功,其二查看版本号信息,版本号信息如下

代码语言:javascript复制
------------------------------------------------------------
Gradle 6.5.1
------------------------------------------------------------

Build time:   2020-06-30 06:32:47 UTC
Revision:     66bc713f7169626a7f0134bf452abde51550ea0a

Kotlin:       1.3.72
Groovy:       2.5.11
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_251 (Oracle Corporation 25.251-b08)
OS:           Windows 10 10.0 amd64

就这?

回想一下在maven中安装好了之后还要做些啥,比如:设置阿里云的镜像仓库,像这样:

代码语言:javascript复制
<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror> 

gradle 怎么办,百度一下你就知道,需要设置在build.gradle构建文件中,那先不管,下一步,还需要设置本地仓库存储路径,像这样:

<localRepository>D:toolsdevelopmentmaven-3.6.3repository</localRepository>

这样配置还是为了防止下载的依赖信息保存到C:盘下但是gradle不是这样,需要从环境变量中设置,那就来呗,和刚才操作一样:

变量名(N):GRADLE_USER_HOME

变量值(V):D:toolsdevelopmentmaven-3.6.3repository --> 这里偷个懒,直接使用maven的本地仓库地址,具体放在一块会不会有影响,我还真的不是很清楚,不然你这样配置一个就好了 D:toolsdevelopmentgradlerepository反正这些都很随意

这样就没啥问题了,我要开始写代码啦,赶紧使用gradle构建一个spring boot项目 爽一下。

刚刚提到的build.gradle 类似mavenpom.xml,写法如下:

build.gradle

代码语言:javascript复制
plugins {
    id 'org.springframework.boot' version '2.3.1.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

// 报名 、版本号
group = 'com.example'
version = '0.0.1-SNAPSHOT'
// 编译版本
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

// 设置启动类
jar {
    baseName 'testJar'
    manifest {
        attributes 'Main-Class': "com.example.demogradle.DemoGradleApplication"
    }
}

repositories {
    // 配置镜像仓库
    maven { url 'https://maven.aliyun.com/repository/public/'}
    // 优先本地仓库查找
    mavenLocal()
    // maven 仓库中心
    mavenCentral()
}

// 依赖
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    compile 'cn.hutool:hutool-all:5.3.7'
    // https://mvnrepository.com/artifact/com.alibaba/fastjson
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.72'
    compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.3.2'
    compile group: 'com.baomidou', name: 'mybatis-plus', version: '3.3.2'
    // https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter
    compile group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.1.23'

}

test {
    useJUnitPlatform()
}

这个文件中配置了很多的信息,比如依赖、比如启动类、比如配置拉取仓库的地址等等,这里有个坑,Java使用lombok只需要lombok插件和依赖

代码语言:javascript复制
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

但是geadle除了插件之外还需要更多的依赖,比如(官方推荐):

代码语言:javascript复制
repositories {
	mavenCentral()
}

dependencies {
	compileOnly 'org.projectlombok:lombok:1.18.12'
	annotationProcessor 'org.projectlombok:lombok:1.18.12'
	
	testCompileOnly 'org.projectlombok:lombok:1.18.12'
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
}

官方还提供另外一种方式Lombok Gradle插件 太麻烦了

还有一个setting.gradle文件,settings.gradles是模块Module配置文件,大多数setting.gradle的作用是为了配置子模块,根目录下的setting.gradle脚本文件是针对module的全局配置settings.gradle用于创建多ProjectGradle项目。ProjectIDEA里对应Module模块。例如:配置modulerootProject.name = 'project-root',为指定父模块的名称, include 'hello'为指定包含哪些子模块

gradle 命令

gradle build

​ 打包构建命令 、ideaTerminal有时候识别不了,但是可以创建 task去运行命令,也挺好用的,只需要设置一次,不然就只能拿出祖传的cmd

gradlew build --refresh-dependencies

​ 强制清除 gradle依赖缓存

gradle clean

​ 清理缓存命令,这个相对mavenmvn clean个人觉得要快一点点

还有很多的命令,但是常用的只有这些。

0 人点赞