Gradle 笔记
一、简介
Gradle是一款Google推出的 基于JVM、 通用灵活的 项目构建工具, 支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml文件,转而使用 简洁的 、 支持多种语言的 build脚本文件 。
二、安装
2.1下载
Gradle 官网 | Installation ,选择完整下载
- Download: binary-only(仅二进制) or complete(完整)
2.2配置环境变量
GRADLE_HOME
: D:\Gradle.8.1.1
path
: %GRADLE_HOME%\bin
GRADLE_USER_HOME
: D:\maven_repository
,和maven 仓库是一个地址(根据自己本地情况而定)。
2.3修改 maven 下载源
Gradle自带的Maven源地址是国外的,该Maven源在国内的访问速度是很慢的,除非使用了特别的手段。一般情况下,
我们建议使用国内的第三方开放的Maven源或企业内部自建Maven源。
在init.d文件夹创建init.gradle文件 , 复制代码
allprojects {
repositories {
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
三、使用
3.1单模块
和maven项目差不多,只是 pom.xml 换成了 build.gradle
- build.gradle
plugins {
//维护springboot版本号,不单独使用,和下面两个插件一起用
id 'org.springframework.boot' version '2.3.7.RELEASE'
//进行依赖管理,在引入其它boot依赖时省略版本号、解决jar包冲突问题
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group 'com.kk'
version '1.0.0'
repositories {
mavenCentral()
}
// 每一行就是一个依赖
// 里面的属性 对应 maven <scop> 标签内容
// implementation: 将依赖项包含在项目的编译路径中,同时会传递给依赖该项目的其他模块。
// compileOnly: 将依赖项包含在编译路径中,但不传递给依赖该项目的其他模块。
// runtimeOnly: 依赖项只在运行时可用,不参与编译过程。
// testImplementation: 用于测试相关的依赖项,会将依赖项添加到项目的测试编译路径中,以便在单元测试或集成测试中使用。
// testCompileOnly: 与 compileOnly 类似,但将依赖项仅包含在测试编译路径中,而不会传递给其他测试模块。
// testRuntimeOnly: 依赖项仅在测试运行时可用,不会参与测试编译过程。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web' //省略版本,原生bom支持,插件management提供testImplementation('org.springframework.boot:spring-boot-starter-test') {
}
test {
useJUnitPlatform()
}
- setting.gradle
rootProject.name = 'gradle-demo'
3.2多模块
- build.gradle------父模块
plugins {
id 'org.springframework.boot' version '2.3.7.RELEASE'
id 'io.spring.dependency-management' version '1.0.14.RELEASE'
id 'java'
}
allprojects {
group = 'com.kk'
version = '0.0.1-SNAPSHOT'
}
// 配置子工程共用部分
subprojects {
// 指定语言
apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: 'java-library'
// 配置项目信息
group 'com.kk'
version '1.0.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
// 配置仓库
repositories {
mavenLocal()
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
mavenCentral()
}
// dependencyManagement {
// imports {
// mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
// mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
// }
// }
dependencies {
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
test {
enabled false
}
}
- build.gradle------子模块1
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
}
repositories {
}
dependencies {
}
- build.gradle------子模块2
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
}
repositories {
mavenLocal()
}
dependencies {
// 依赖其他子模块
// implementation:依赖只作用于当前的module而不对外公开;
// implementation project(path: ':model')
// api依赖对外公开,而不是只作用于当前module.依赖id 'java-library'
api project(path: ':model')
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
test {
useJUnitPlatform()
}
- setting.gradle
rootProject.name = 'gradle-demo'
include 'controller'
include 'model'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)