Gradle上传插件到仓库

准备工作:首先新建一个插件模块 plugin_module

把plugin_module里面的文件全部删了只留下src/main 和 build.gradle 文件。

  1. 修改build.gradle文件内容
1
2
3
4
5
6
7
apply plugin: 'groovy'  //必须
dependencies {
implementation gradleApi() //必须
implementation localGroovy() //必须
}
repositories {
}
  1. 写入我们自定义的插件MyDefaultTask.groovy
1
2
3
4
5
6
7
// 打包的数据 插件
class ReleaseInfoPlugin implements Plugin<Project> {
@Override
void apply(Project project) {

}
}
  1. 新建文件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'
}