Gradle 简介
Gradle是一个基于JVM的构建工具,它提供了:
- 像Ant一样,通用灵活的构建工具
- 可以切换的,基于约定的构建框架
- 强大的多工程构建支持
- 基于Apache Ivy的强大的依赖管理
- 支持maven, Ivy仓库
- 支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件。
- 对Ant的任务做了很好的集成
- 基于Groovy,build脚本使用Groovy编写
- 有广泛的领域模型支持构建
Gradle插件结构
自定义gradle插件时,既可以使用groovy语言,也可以使用Java或者Kotlin语言。一般我都是使用groovy语言。
自定义插件的目录结构如下:
plugin-project
└── src
└── main
| ├── groovy
| | └── com
| | └── package
| | └── name
| └── resources
| └── META-INF
| └── gradle-plugins
|_ build.gradle
由上述插件结构可知,自定义插件大致可分为三个部分。groovy代码目录,resources/META-INF目录和build.gradle配置文件。
build.gradle
apply plugin: 'groovy'
apply plugin: 'maven'
group 'com.opensource.gradle'
version '1.0.0'
dependencies {
//gradle sdk
implementation gradleApi()
//groovy sdk
implementation localGroovy()
}
META-INF/gradle-plugins
在META-INF/gradle-plugins 目录下添加一个属性文件,主要用来使得Gradle找到该插件。
com.opensource.MyCustomPlugin.properties
implementation-class=com.opensource.gradle.plugin.MyCustomPlugin
注: 表示插件 ID 为 com.opensource.MyCustomPlugin 的插件所对应的实现类为 com.opensource.gradle.plugin.MyCustomPlugin
com.opensource.MyCustomPlugin 就是其他地方 apply plugin:
时使用的名称
Groovy代码 目录
为了创建Gradle插件,我们必须创建一个实现Plugin
接口的类。当我们将自定义的插件应用到项目时,Gradle就会创建这个类的实例,并调用这个类的apply()
方法。而project作为该方法的参数,因此插件可以使用project的配置。下面我们在groovy目录下创建CustomPlugin.groovy。
import org.gradle.api.Plugin
import org.gradle.api.Project
class MyCustomPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("apply MyCustomPlugin")
}
}
发布插件
只需要在build.gradle文件中添加uploadArchives task就可以将插件发布到本地。
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
repository(url: System.getenv("REPO_URL_RELEASE")) {
authentication(userName: System.getenv("REPO_USER_NAME"), password: System.getenv("REPO_PASSWORD"))
}
}
}
}
}
执行uA任务发布插件到仓库
gradle clean build uA
-
REPO_URL_RELEASE 为maven私库地址
-
REPO_USER_NAME 为私库用户名
-
REPO_PASSWORD 为私库密码
根据自己的环境信息,这里替换为指定的值
应用插件
在需要使用该插件的项目中的build.gradle 文件中,添加如下代码
apply plugin: 'com.opensource.MyCustomPlugin'