Android Gradle plugin 开发并上传到JCenter
Posted 小向往
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle plugin 开发并上传到JCenter相关的知识,希望对你有一定的参考价值。
注册 bintray
账号
- 注册地址
- 在个人仓库中新建一个仓库
可以参考之前的博客 传送
创建插件项目
可以先创建Module->android Library,然后删掉多余的文件和文件夹。 MyPlugin
必须是 groovy
格式的文件:MyPlugin.groovy
1. 目录结构
2. 项目根目录 buidle.gradle
配置
buildscript
dependencies
...
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
3. 插件 Module build.gradle
文件
apply plugin: 'groovy'
apply plugin: 'maven'
//发布 Jcenter
apply from: 'bintray.gradle'
//本地
apply from: 'maven.gradle'
4. maven.gradle
文件
apply plugin: 'maven'
//发布在本地,../plugin 文件夹
uploadArchives
repositories.mavenDeployer
repository(url: uri('../plugin'))
pom.groupId = 'com.totcy.android'
pom.artifactId = 'gradle-plugin-test'
pom.version = '1.0.0'
5. bintray.gradle
文件
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'
apply plugin: 'java'
apply plugin: 'signing'
apply plugin: 'maven'
//使用: classpath 'com.totcy.android:gradle-plugin-test:1.0.0'
group = "com.totcy.android"
version = "1.0.0"
project.archivesBaseName = "gradle-plugin-test"
task javadocJar(type: Jar, dependsOn: javadoc)
classifier = 'javadoc'
from javadoc.destinationDir
task sourceJar(type: Jar)
classifier = 'sources'
from sourceSets.main.allSource
ext
pomFilePath = "$project.buildDir.absolutePath/tmp/pom.xml"
pomFile = file(pomFilePath)
configurations
pom
artifacts
archives jar
archives sourceJar
archives javadocJar
if (pomFile.exists())
pom pomFile
task signJars(type: Sign, dependsOn: [jar, javadocJar, sourceJar])
sign configurations.archives
task signPom(type: Sign)
sign configurations.pom
if (project.ext.pomFile.exists())
task preparePublication(dependsOn: [signJars, signPom])
else
task preparePublication(dependsOn: signJars)
def getSignatureFiles =
def allFiles = project.tasks.signJars.signatureFiles.collectit
def signedSources = allFiles.find it.name.contains('-sources')
def signedJavadoc = allFiles.find it.name.contains('-javadoc')
def signedJar = (allFiles - [signedSources, signJars])[0]
return [
[archive: signedSources, classifier: 'sources', extension: 'jar.asc'],
[archive: signedJavadoc, classifier: 'javadoc', extension: 'jar.asc'],
[archive: signedJar, classifier: 'null', extension: 'jar.asc']
]
def getPomSignature =
return project.tasks.signPom.signatureFiles.collect it [0]
def siteUrl = 'https://github.com/792814781/gradle-plugin-test'
def gitUrl = 'https://github.com/792814781/gradle-plugin-test.git'
def issueUrl = 'https://github.com/792814781/gradle-plugin-test/issues'
install
repositories.mavenInstaller
// generates POM.xml with proper parameters
pom
project
packaging 'jar'
name 'The Android Plugin for Totcy.'
url siteUrl
licenses
license
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
developers
developer
id 'bintray用户名账户'
name '用户名'
email '邮箱'
scm
connection gitUrl
developerConnection gitUrl
url siteUrl
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg
repo = "maven" //bintray 上面 Package名字
name = "gradle-plugin-test" //bintray 上面项目名
desc = 'The Android Plugin for Totcy.'
websiteUrl = siteUrl
vcsUrl = gitUrl
issueTrackerUrl = issueUrl
licenses = ["Apache-2.0"]
labels = 'Groovy'
publicDownloadNumbers = true
publish = true
bintray.user
和 bintray.apikey
属于账户私密信息,定义在 local.properties
,这两个信息都可以在 bintray 个人信息里面找到
6. 执行
./gralew install
./gralew bintrayUpload
执行成功就可以在 bintray 个人仓库里面看到了,最后记得 点击Add to Jcenter
提交审核。
使用
使用的项目根目录 build.gradle
buildscript
repositories
...
//发布在本地文件夹
maven url "../plugin"
dependencies
...
classpath 'com.totcy.android:gradle-plugin-test:1.0.0'
allprojects
repositories
...
//审核之前添加仓库地址即可,通过后可以删除
maven url "https://dl.bintray.com/intotcy/maven"
使用的项目 Module gradle.build
apply plugin: 'gradle-plugin'
以上是关于Android Gradle plugin 开发并上传到JCenter的主要内容,如果未能解决你的问题,请参考以下文章