文章目录
- Gradle插件开发开发学习,发布repo本地仓库
- 一.Gradle插件
- 二.Gradle插件开发,页面路由
- 1.buildSrc
- 2.插件运行
- 3.参数配置
- 三. 发布简易版Gradle插件
- 3.1 发布到本地仓库
Gradle插件开发开发学习,发布repo本地仓库
一.Gradle插件
提供具体的构建功能
提高代码的复用性
二进制插件
脚本插件
在工程项目下的build.gradle文件中
二进制插件
// Top-level build file where you can add configuration options common to all sub-projects/modules.
//声明插件ID与版本号
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
id 'org.jetbrains.kotlin.jvm' version '1.8.20' apply false
}
应用插件
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
脚本插件,新建一个gradle脚本文件
在子过程中添加这个插件的关联
二.Gradle插件开发,页面路由
标记页面,收集页面,生成文档,注册映射,打开页面
1.buildSrc
配置
//引用groovy插件,编译插件工程中的代码
apply plugin: 'groovy'
//声明仓库的地址
repositories {
mavenCentral()
}
//声明依赖的包
dependencies{
implementation gradleApi()
implementation localGroovy()
}
2.插件运行
手动创建这个目录
配置
app模块中测试一下
正确输出
3.参数配置
类似下面这些就是参数配置
android {
namespace 'com.qfh.common'
compileSdk cfg.android.compileSdk
defaultConfig {
applicationId cfg.applicationId.app
minSdk cfg.android.minSdk
targetSdk cfg.android.targetSdk
versionCode cfg.android.versionCode
versionName cfg.android.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
定义Extension,注册Extension,使用Extension,获取Extension
新定义一个类
注册Extension,回调.
设置我们的参数,在上面的回调中就会获取到我们用户设置的参数值。
三. 发布简易版Gradle插件
3.1 发布到本地仓库
//调用maven插件,用于发布
apply plugin: 'maven-publish'
publishing {
repositories {
maven {
//设置发布路径为工程根目录下面的 repo文件夹
url = uri('../repo')
}
}
publications {
maven(MavenPublication) {
//设置groupId,通常为包名
groupId = 'com.qfh.route'
//设置artifactId,为当前插件的名称
artifactId = 'router-gradle-plugin'
version = '1.0.0'
}
}
}
copy一份buildSrc重新命名为插件的名称router-gradle-plugin,不能直接在buildSrc中发布插件。
在项目的根目录下注册这个拷贝后的子工程
双击publish就可以发布到本地仓库
最终多了一个文件夹目录