一般分两种,第一种紧 本项目使用;第二种 发布出去引用
一. 仅本项目使用
新建一个java library 名称必须为 buildSrc,这个名称会自动加入编译,所以仅限本项目使用
只保留src/main和gradle文件,其他全部删除
-
修改gradle文件如下:
apply plugin: 'groovy' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation gradleApi() implementation localGroovy() } sourceCompatibility = "7" targetCompatibility = "7"
-
在src/main路径下,新建groovy目录,并创建一个自己的包名和自定义plugin类,例如,我新建的com.zm包 和 RemoteDemoPlugin类,如下
package com.zm import org.gradle.api.Plugin import org.gradle.api.Project class RemoteDemoPlugin implements Plugin<Project> { @Override void apply(Project project) { System.out.println("testestestestestestes 1u394e238r8234848rewrewr748237847343") } }
-
在src/main路径下,新建resources/META-INF/gradle-plugins,然后新建properties配置文件,这里的配置文件的名称以后要有用,例如,我新建的 DemoDemoPlugin.properties,如下:
implementation-class=com.zm.RemoteDemoPlugin
然后clean,build项目,就可以看到输出日志了
二.发布,引用
新建一个java library 名称随意,例如我新建的叫 DemoPlugin
只保留src/main和gradle文件,其他全部删除
-
修改gradle文件如下:
apply plugin: 'groovy' apply plugin: 'maven' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation gradleApi() implementation localGroovy() } group = 'com.zhaoyan.plugin.remote' version = '4.0.0' uploadArchives{ repositories { mavenDeployer{ repository(url: uri('/Users/macbook/Desktop/maven_repos')) } } } sourceCompatibility = "7" targetCompatibility = "7" #这里配置好发布的环境,所以引入了maven插件,定义了发布的 自定义组名(com.zhaoyan.plugin.remote) 和 版本号(4.0.0), #还有发布到的仓库路径(/Users/macbook/Desktop/maven_repos)
-
在src/main路径下,新建resources/META-INF/gradle-plugins,然后新建properties配置文件,这里的配置文件的名称以后要有用,例如,我新建的 DemoDemoPlugin.properties,如下:
implementation-class=com.zm.RemoteDemoPlugin #这里的com.zm.RemoteDemPlugin,指向的是我们的自定义插件
-
定义完后,编译,运行uploadArchives任务,将我们的插件发布到仓库,如下图:
-
然后我们在/Users/macbook/Desktop/maven_repos路径下,就能看到生成的插件了,如下图:
-然后我们在父工程project下的build.gradle下,引用我们的仓库和插件,如下:
然后再我们的app module下,引入要使用的插件,:
- 运行项目,就能看到自定义插件的 打印信息