Gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
官方文档(6.6.1)
文档地址:点击查看gradle文档
Gradle 下载与配置
下载Gradle
下载地址:点击下载gradle
下载all版本的,里面包含了Gradle SDK 所有相关的内容,包括源代码、文档、示例等.
配置Gradle环境
open -e .bash_profile
GRADLE_HOME=gradle解压路径/gradle/gradle-4.6
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
本地仓库配置
export GRADLE_USER_HOME=/Users/lizechen/myrepository
#该路径可与原MAVEN仓库路径相同
终端输入
source ~/.bash_profile
使环境变量生效
验证
在终端上执行gradle -version,查看是否配置成功
Gradle构建SpringBoot项目
gradle项目中idea中的构建
-
在idea中的Preference中配置Gradle为本地的Gradle
-
在idea中新建项目
-
选择Spring Initializr
-
Spring Initializr Project Settings中的Type 选择Gradle Project
gradle构建的项目有build.gradle和settings.gradle文件
- build.gradle - 文件包含项目构建所使用的脚本。
- settings.gradle - 文件将包含必要的一些设置,例如,任务或项目之间的依懒关系等
settings.gradle配置
settings.gradles是模块Module配置文件,大多数setting.gradle的作用是为了配置子模块,根目录下的setting.gradle脚本文件是针对module的全局配置
settings.gradle用于创建多Project的Gradle项目。Project在IDEA里对应Module模块。
例如配置module名rootProject.name = ‘project-root’,为指定父模块的名称,include ‘hello’ 为指定包含哪些子模块
//平台根
rootProject.name = 'project-root'
//包含子系统以及模块
include ':project-core'
//Hello系统模块的加载
include ':project-hello'
//World系统模块的加载
include ':project-world'
build.gradle的配置(类似于Maven工程中的pom.xml相同)
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management' //应用的插件
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '14.0.1'
repositories { //远程仓库,根据先后顺序,决定优先级
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
build.gradle中各种依赖说明
1.implementation
这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
2.api
完全等同于compile指令。
3.compile
这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。
4.testCompile
testCompile 只在单元测试代码的编译以及最终打包测试时有效。
5.debugCompile
debugCompile 只在debug模式的编译和最终的debug打包时有效。
6.releaseCompile
releaseCompile 仅仅针对Release模式的编译和最终的Release打包。
7.provided
只在编译时有效,不会参与打包,可以在自己的moudle中使用该方式依赖。
build.gradle
plugin
有两种写法
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'idea'
}
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
使用plugin有两个步骤:
- 解析(resolve)到指定plugin的代码位置;
- 应用(apply)plugin,即调用plugin。如果是脚本plugin,就执行脚本,如果是二进制plugin,就执行Plugin.apply(T)
老的写法,解析和应用是分开的:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0"
}
}
apply plugin: "com.jfrog.bintray"
新的写法叫plugins DSL,是合并在一起的:
plugins {
id "com.jfrog.bintray" version "1.8.0"
}
plugins 新用法,但是plugin必须是 [Gradle plugin repository](Gradle - Plugins) 中的。
apply plugin老用法,但是更灵活。
plugins 不支持多项目 配置(subprojects
, allprojects
),但是支持 构建其子项目
repositories
使用Maven的声明写法
repositories {
//阿里仓库
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
//本地仓库
mavenLocal()
//Maven中心仓库
mavenCentral()
}