Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
简单来说gradle就是用于项目构建和依赖管理的,如果你用过maven的pom.xml就知道maven的配置和语法有点繁杂,gradle就简洁了很多。
(1) 官网下载 目前最新版是gradle-7.2-rc-1-all.zip
(2) 下载后解压
(3) 环境变量配置
在C盘之外的其他盘里新建一个文件夹用于存储将来所有下载的jar包
(当然你也可以跳过这一步,如果你的C盘比较大)
因为默认的gradle下载的依赖jar包会存储在C盘用户目录下的.gradle目录下,如果你的C盘比较小,依赖的jar包比较多的话,C盘将来会不够用。
(4) 检测是否安装成功
cmd命令行输入 gradle -v
(1) idea的gradle设置中修改gradle的存储目录(如果上面你没有跳过那一步)和 gradle 的位置
(2)新建gradle项目
构建完的项目目录如下:
由于我要构建多模块,所以src目录没用可以删除。
我们可以看到build.gradle和setting.gradle 文件。
其中build.gradle里用于配置你的仓库地址(就是从哪里下载jar包),仓库地址可配置多个、项目用到的jar包等;
setting.gradle里用于配置项目里项目名称和包含哪些模块,如果你新加了模块idea会自动帮你修改setting.gradle文件。
(3) build.gradle配置
我们可以将仓库地址、插件、需要用到的依赖都在 build.gradle里配置。但都配置在一个文件里有点混乱,所以可以单独新建了一个 build-libraries.gradle 文件用于专门配置项目用到的依赖。
所以最终 build.gradle示例如下:
plugins {
id 'java'
}
group 'com.mytest'
version '1.0-SNAPSHOT'
description '开发'
allprojects {
apply from: "${rootProject.projectDir}/build-libraries.gradle"
repositories {
// 先去本地仓库查找有没有对应jar
mavenLocal()
//自己搭建的Sonatype Nexus远程仓库1
maven {
credentials {
username = "admin"
password = "123456"
}
allowInsecureProtocol = true
url 'http://127.0.0.1:8081/repository/maven-releases/'
}
//自己搭建的Sonatype Nexus远程仓库1
maven {
credentials {
username = "admin"
password = "123456"
}
allowInsecureProtocol = true
url 'http://127.0.0.1:8081/repository/maven-central/'
}
//阿里云仓库
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
jar {
manifest.attributes provider: 'gradle'
}
}
test {
useJUnitPlatform()
}
build-libraries.gradle 示例如下:
library中前面的名字可以随便起,在后面模块引用的时候会用到
ext {
fastjsonVersion = '1.2.58'
jedisVersion = '2.7.1'
commonsFileUploadVersion = '1.3.1'
commonsCodeVersion = '1.11'
httpclientVersion = '4.5.1'
jodconverterVersion = '2.2.1'
poiVersion = '3.11'
commonsNetVersion = '3.6'
commonsLangVersion = '2.4'
library = [
//juniti 用于单元测试
testImplementation : "org.junit.jupiter:junit-jupiter-api:5.7.0",
testRuntimeOnly : "org.junit.jupiter:junit-jupiter-engine:5.7.0",
//其他模块需要用到的依赖
fastjson : "com.alibaba:fastjson:${fastjsonVersion}",
jedis : "redis.clients:jedis:${jedisVersion}",
commonsFileUpload : "commons-fileupload:commons-fileupload:${commonsFileUploadVersion}",
commonsCode : "commons-codec:commons-codec:${commonsCodeVersion}",
httpclient : "org.apache.httpcomponents:httpclient:${httpclientVersion}",
jodconverter : "com.artofsolving:jodconverter:${jodconverterVersion}",
poi : "org.apache.poi:poi:${poiVersion}",
poiXml : "org.apache.poi:poi-ooxml:${poiVersion}",
commonsNet : "commons-net:commons-net:${commonsNetVersion}",
commonsLang : "commons-lang:commons-lang:${commonsLangVersion}"
]
}
(4) 新建模块model1
新建完后可以看到model1中也有一个build.gradle,这个文件是表明这个模块需要用到哪些模块
model1中的build.gradle:
plugins {
id 'java'
}
group 'com.mytest'
version '1.0-SNAPSHOT'
dependencies {
implementation library['testImplementation']
implementation library['testRuntimeOnly']
implementation library['fastjson']
implementation library['jedis']
}
test {
useJUnitPlatform()
}
注意:
如果你以前使用过低版本的 gradle,可能接触过 gradle 中的 compile、api来导入依赖。但在高版本中compile、api都不再推荐且被废除,所以要使用 implementation 导入。
(5) 新建模块model2
model2 中的 build.gradle:
plugins {
id 'java'
}
group 'com.mytest'
version '1.0-SNAPSHOT'
dependencies {
implementation library['testImplementation']
implementation library['testRuntimeOnly']
implementation library['fastjson']
implementation project(':model1')//引入model1模块
}
test {
useJUnitPlatform()
}
(6) 构建