1-入门
2024年7月29日大约 3 分钟
Gradle
官方网址:https://gradle.org/
SP: build.gradle 文件相当于 maven中的pom
指定仓库
/*
指定仓库地址:默认是使用的maven的中央仓库,下载的jar包从中央仓库下载到本地仓库中
mavenCentral()
可以指向默认先从本地仓库中下载,没有再从中央仓库中下载
mavenLocal()
*/
repositories {
mavenLocal()
mavenCentral()
}
自定义任务
结论:
1、任务组成分为 配置代码 和 动作代码 ,配置代码会在build阶段执行
2、通过tasks.register定义的任务,在build阶段的配置过程中不执行,可以看到控制台没有打印t4
3、通过tasks.register定义的任务,在任务的执行阶段的配置过程中是执行的,就是执行t4任务时,t4的配置代码会执行
// 自定义任务
// 定义方式1
task t1 {
// 自定义分组
group("myTasks")
// 配置代码
println '我是任务1'
// 动作代码
doFirst {
println '在任务1执行之前的动作代码'
}
doLast {
println '在任务1执行之后的动作代码'
}
}
// 定义方式2
task(t2, {
// 自定义分组
group("myTasks")
// 配置代码
println '我是任务2'
// 动作代码
doFirst {
println '在任务2执行之前的动作代码'
}
doLast {
println '在任务2执行之后的动作代码'
}
})
// 定义方式3
tasks.create('t3') {
group("myTasks")
println '我是任务3'
}
// 定义方式4
tasks.register('t4') {
group("myTasks")
println '我是任务4'
}
// 定义方式5
tasks {
task t5 {
group("myTasks")
println '我是任务5'
}
}
// 一次性定义多个任务
3.times { index ->
{
task("taks${index}") {
group("myTasks")
println "我是任务taks${index}"
}
}
}
任务依赖
结论:
1、有依赖关系的任务在执行之前,会先去执行依赖的任务
// 任务依赖
task a {
group("myTasks")
doFirst {
println "我是任务a"
}
}
// 方式1
task b(dependsOn:a){
group("myTasks")
doFirst {
println "我是任务b,依赖于a"
}
}
// 方式2
task c {
group("myTasks")
dependsOn 'b'
doFirst {
println "我是任务c,依赖于b"
}
}
// 方式3
task d {
group("myTasks")
doFirst {
println "我是任务d,依赖于c"
}
}
d.dependsOn c
插件
// 自定义插件
// SP:这里定义的插件只能在当前文件中使用,不能在整个项目中使用
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('myplugin01') {
println '自定义插件 myplugin01'
group("myTasks")
doLast {
println 'Hello from the GreetingPlugin'
}
}
}
}
apply plugin: GreetingPlugin
整个项目都可以运用的插件
1、创建目录以及文件
-buildSrc
--src
---main
----groovy
-----MyPlugin.groovy
---build.gradle
// build.gradle
apply plugin: 'groovy'
// MyPlugin.groovy
import org.gradle.api.Plugin
import org.gradle.api.Project
// 自定义脚本插件,可以在整个项目中使用
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.task('myplugin02') {
group("myTasks")
doLast {
println 'Hello from the MyPlugin'
}
}
}
}
// 插件应用
apply plugin: MyPlugin
传递依赖
// 所有子模块都应用Java插件
allprojects {
apply plugin: 'java'
}
/*
指定仓库地址:默认是使用的maven的中央仓库,下载的jar包从中央仓库下载到本地仓库中
mavenCentral()
可以指向默认先从本地仓库中下载,没有再从中央仓库中下载
mavenLocal()
*/
// 子项目
subprojects {
// 指定子项目仓库策略,实现统一配置
repositories {
mavenLocal()
mavenCentral()
}
// 子项目依赖管理,这里的依赖所有子模块都会包含
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
}
// 此配置只针对根项目生效
repositories {
mavenLocal()
mavenCentral()
}