一、前言
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。
二、下载gradle
官网下载地址:Gradle | Releases
其他下载地址:Index of /gradle/
注意:使用idea 创建gradle 项目需查看idea适配的gradle 版本 ,找到idea的安装路径进入\plugins\gradle\lib下查看gradle 的版本,我使用的是IntelliJ IDEA 2022.2.3 ,支持的gradle7.4的版本,下载的是
gradle-7.4-all.zip
三、配置环境变量
1、说明: 下载gradle-7.4-all.zip后解压,在系统环境下新增
GRADLE_HOME: 解压后你的gradle路径
2、path 环境变量下新增:%GRADLE_HOME%\bin
3、配置maven 的环境变量:
MAVEN_HOME: 你的mavend的存放路径
4、path 环境变量下新增:%MAVEN_HOME%\bin
四、init.gradle
说明:由于gradle构建时默认是从中央仓库中去查找依赖,中央仓库一般都在国外,速度很慢;我们可以执行构建时查找以来的顺序,进入gradle的文件夹内找到init.d文件夹后创建init.gradle(初始化构建依赖)添加如下内容,构建顺序按照mavenLocal() 本地仓库、 阿里云远端仓库、maven中央仓库;
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/' }
}
}
}
如图:
五、配置本地仓库
说明: 由于我们优先从本地仓库获取依赖,环境变量中已配置maven的地址,找到Maven的安装路径下conf文件夹下的的settings.xml文件,修改本地仓库的地址,默认是${user.home}/.m2/repository,建议修改成c盘外的其他地址;如下图我的本地仓库地址是E:/lib;
注意: gradle 和 maven 可共同使用一个本地仓库
六、使用idea 创建SpringBoot Gradle项目
1、新建Test-Gradle 项目,点击Create
2、配置gradle
点击idea 的file-> settings, 其中 gradel user home 配置的是本地的maven 仓库,
Use Gradle from 选择第三个选项,配置gradle的安装路径
3、点击此处,导入依赖
4、主要结构介绍
build.gradle:类似maven的pom.xml,可在dependencies 下添加项目依赖
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'mysql:mysql-connector-java:8.0.31'
implementation 'com.baomidou:mybatis-plus:3.5.3.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
settings.gradle: 用于配置子模块,本项目无其他子模块;单项目构建,settings.gradle文件是可选的;多项目构建,settings.gradle文件是必需的,且必须位于项目的根目录下;
rootProject.name = 'Test-Gradle'
多个模块,如下
// 为指定父模块的名称 平台根
rootProject.name = 'project-root'
//包含子系统以及模块
include ':project-core'
//Hello系统模块的加载
include ':project-hello'
5、启动: 可通过双击bootRun启动,也可通过idea 的run/debug 正常启动
6、打包: 双击,可在bulid 文件夹下的libs 下生成jar 包
七、build.gradle 依赖管理简介
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'mysql:mysql-connector-java:8.0.31'
implementation 'com.baomidou:mybatis-plus:3.5.3.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
maven 只有 compile、provided、test、runtime 这四种 scope
1、implementation: 默认的scope。implementation的作用域会让依赖在编译和运行时均包含在内,但是不会暴露在类库使用者的编译时。 举例,如果我们的类库包含了gson,那么其他人使用我们的类库时,编译时不会出现gson的依赖。
2、api:和implementation类似,都是编译和运行时都可见的依赖。但是api允许我们将自己类库的依赖暴露给我们类库的使用者。
3、compileOnly 和 runtimeOnly:这两种顾名思义,一种只在编译时可见,一种只在运行时可见。类似于 Maven的provided比较接近。
4、testImplementation:这种依赖在测试编译时和运行时可见,类似于Maven的test作用域。
5、testCompileOnly 和 testRuntimeOnly:这两种类似于compileOnly和runtimeOnly,但是作用于测试编译时和运行时。
版权归原作者 面壁者-扬 所有, 如有侵权,请联系我们删除。