网上找了好久,终于找到两种可以满足要求的方式。
参考文章链接gradle 7.x 如何开发一个自定义 Plugin - 掘金
新建一个 Groovy Model
as 没法直接创建 groovy model,可以先创建一个 java model,然后修改 gradle 配置
- plugins {
- id 'groovy'
- id 'maven-publish'
- }
-
- dependencies {
- implementation gradleApi()
- implementation localGroovy()
- implementation 'com.android.tools.build:gradle:3.5.2'
- implementation 'org.javassist:javassist:3.28.0-GA'
- }
这一步可能会报错:
Build was configured to prefer settings repositories over project repositories but repository 'Gradle Libs' was added by unknown code
可以在 settings.gradle 中,把这句话注释掉
创建 Plugin
首先创建固定目录文件:resources/META-INF/gradle-plugins/package.properties
文件中写入如下内容:
implementation-class=xyz.mlya.javaassist.ModifyPlugin
这个是作为我们的入口文件。
发布 Plugin 到本地 maven 仓库
- publishing {
- publications {
- maven(MavenPublication) {
- groupId = 'xyz.mlya.javaassist'
- artifactId = 'modify'
- version = '1.0.0'
-
- from components.java
- }
- }
-
- repositories {
- maven {
- url = "../repo"
- }
- }
- }
这个时候,我们运行 gradle 命令 ./gradlew publish (注意是publish task任务,而不是其他任务,比如publishToMavenLocal task任务)
执行成功后,我们会看到,在我们的项目目录下,会创建 repo 目录,里面有我们的包名的路径和里面的 jar 文件。
在项目中引入这个 Plugin
在 settings.gradle 中,添加本地仓库,注意,是往 PluginManagement 中添加仓库
- pluginManagement {
- repositories {
- maven { url('./repo') }
- gradlePluginPortal()
- google()
- mavenCentral()
- }
- }
在项目中引入 Plugin,还需要在项目的 build.gradle 中引入:
- buildscript {
- dependencies {
- classpath 'xyz.mlya.javaassist:modify:1.0.0'
- }
- }
这里我还是使用 buildscript 的方式引入(因为对 gradle 不熟悉),起码能 work 起来,有什么好的建议可以提给我,感激不尽。
然后,在 app model 里引入 plugin
- plugins {
- id 'com.android.application'
- id 'xyz.mlya.javaassist'
- }
- 复制代码
再 sync 一下,我们会看到控制台输出了我们的那句话,说明我们的插件引入成功了。
这个之前自己要写过,参考链接为:开发Gradle插件并上传至本地maven库_小刘学安卓的博客-CSDN博客