准备工作:首先新建一个插件模块 plugin_module
把plugin_module里面的文件全部删了只留下src/main 和 build.gradle 文件。
- 修改build.gradle文件内容
1 2 3 4 5 6 7
| apply plugin: 'groovy' dependencies { implementation gradleApi() implementation localGroovy() } repositories { }
|
- 写入我们自定义的插件MyDefaultTask.groovy
1 2 3 4 5 6 7
| class ReleaseInfoPlugin implements Plugin<Project> { @Override void apply(Project project) { } }
|
新建文件resources/META-INF/gradle-plugins
创建文件 releaseinfo.properties 。这里需要注意这个文件名字就是我们以后通过apply pligun:”这里需要写入的插件名字”。
文件内容:
1
| implementation-class=ReleaseInfoPlugin // 插件类
|
至此准备工作做好了!
上传到本地Maven
插件上传:
在我们的插件模块的build.gradle加入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| apply plugin: 'groovy' //必须 apply plugin: 'maven-publish' // 上传maven的插件
dependencies { implementation gradleApi() //必须 implementation localGroovy() //必须 } repositories { }
publishing { publications { maven(MavenPublication) { groupId = com.librity.releaseplugin artifactId = releaseInfo version = 1.0
from components.java } } }
|
同步完成功能,可以看到我们多了这些任务:
我们点击publishMaven…ToMavenLocal
任务执行完毕后我们会在这看到我们的maven库:
插件使用
在根目录的build.gradle写入:
1 2 3 4 5 6 7
| repositories { mavenLocal() // 表示需要依赖本地的maven仓库 } dependencies { // 这个就是我们刚才上传的插件 地址可以打开maven-metada0lical.xml看下都是怎么填的 classpath 'com.librity.releaseplugin:releaseInfo:1.0' }
|
这些依赖写好后就可以在app的build.gradle里面进行使用了:
1 2 3 4 5
| plugins { id 'com.android.application' id 'kotlin-android' id 'releaseinfo' // 刚才我们定义的插件名字 }
|
上传GithubMaven
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| apply plugin: 'groovy' //必须 apply plugin: 'maven-publish' //必须添加这个插件才能上传
dependencies { implementation gradleApi() //必须 implementation localGroovy() //必须 } repositories { }
publishing { publications { maven(MavenPublication) { groupId = GROUDID artifactId = ARTIFACTID version = versions
from components.java } } repositories { maven { def mavenLib = file(getProperty('mavenPath')) url = "file://${mavenLib.absolutePath}" } } }
|
在gradle.properties里面加上这几个参数:
1 2 3 4
| mavenPath = .. GROUDID = com.librity.releaseplugin ARTIFACTID = releaseInfo versions = 1.0
|
同步下工程:
然后我们把我们的工程上传到github上面。
使用
1 2 3 4 5 6 7 8
| maven{ // 格式:'https://raw.githubusercontent.com/[username]/[工程名字]/[分支] url 'https://raw.githubusercontent.com/librityYu/ReleaseInfoTask/maven' } dependencies { // 我们的插件 classpath 'com.librity.releaseplugin:releaseInfo:1.0' }
|
然后在我们要使用的module的build.gradle
1 2 3
| plugins { id 'releaseinfo' }
|