首先是插件工程中你的gradle build文件的设置
id 'java-library'
id 'org.jetbrains.kotlin.jvm'
id 'kotlin'
id 'kotlin-kapt'
id 'maven-publish'
id 'java-gradle-plugin'
}
dependencies {
kapt 'com.google.auto.service:auto-service:1.0'
api gradleApi()
compileOnly 'com.android.tools.build:gradle:4.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.5.32"
implementation "org.jetbrains.kotlin:kotlin-reflect:1.5.32"
testCompileOnly 'com.android.tools.build:gradle:4.0.0'
}
gradlePlugin {
// 这里要注意了,有了这个配置 我们就无需在插件工程中设置什么resouces-meta-inf 文件夹了,否则会 //有冲突 而且这里用插件配置的方式 比手动写配置文件要方便的多
plugins {
greeting {
id = 'com.smart.gradlelib'
implementationClass = 'com.smart.gradlelib.MyGradlePlugin'
}
}
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceSets {
main {
java {
srcDirs += []
}
kotlin {
srcDirs += ['src/main/kotlin', 'src/main/java']
}
}
}
compileKotlin {
kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8
}
java {
withJavadocJar()
withSourcesJar()
}
version = '1.1-SNAPSHOT'
publishing {
repositories {
maven {
allowInsecureProtocol = true
credentials {
username('admin')
password('admin123')
}
if (version.endsWith('SNAPSHOT')) {
url('你的maven地址')
} else {
url('你的maven地址')
}
}
}
publications {
def versionValue = version
release(MavenPublication) {
// 插件的组ID,建议设置为插件的包名
groupId = 'com.smart.gradlelib'
// 翻译过来是 工件ID,我的理解是插件的名字
artifactId = 'testdebug'
version = versionValue
// 组件类型,我们的插件其实就是Java组件
from components.java
}
snapshot(MavenPublication) {
// 插件的组ID,建议设置为插件的包名
groupId = 'com.smart.gradlelib'
// 翻译过来是 工件ID,我的理解是插件的名字
artifactId = 'testdebug'
version = versionValue
// 组件类型,我们的插件其实就是Java组件
from components.java
}
}
}
然后我们将这个插件发布到maven仓库中
然后去我们的宿主工程中 引入这个插件
新版本的android studio 比较坑,搞了个plugins id的写法 我折腾了好久 也没办法引入我的插件,索性直接还是把bs那套引入进来就可以了
最后不要忘记在你的app module 下 引入这个插件
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
// 不要遗漏这个哟
id 'com.smart.gradlelib'
}
然后同步一下,你就发现你的插件生效了,现在就剩最后一步 如何debug你的插件代码,毕竟不停的日志输出来调试就太麻烦了。
首先在我们的宿主工程 敲一下命令:
./gradlew :app:assemble -s -Dorg.gradle.debug=true --no-daemon
然后你会发现你的命令卡在这里了: 这就成功了一半了
这里要注意的是 如果你的工程是agp7.x版本 则要特殊配置下android11环境
在你的gradle.properties 文件中 配置下
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home
然后我们转到我们的插件工程中:
选择Edit
然后新建一个 remote jvm debug 就可以了,name别忘记写一个容易记住的
最后在你想debug的地方 打个断点, 然后点击一下debug 你就会发现 刚才宿主工程的 gradle继续执行了 你就可以开始愉快的进行debug了