首先声明,这个是在android studio中使用过程中搞出来的。
在as的项目里,经常会看到这样的代码:
compile 'com.quicktortoise:com-quicktortoise-dev:1.0.0'
或是这样的:
compile('com.afollestad.material-dialogs:core:0.8.4.2@aar') {
transitive = true
}
使用时,都是copy自其他开源项目中,虽然不知道为什么这么使用,但隐约知道,由于gradle的构建方式的使用,as在build.gradle文件中声明上述compile语句时,gradle会自动从网上找到相应的库(jar或aar等)加载到当前项目中,从而方便我们使用。
今天搞了一下午,终于弄明白了,这个就是好多高手在使用的中央仓库,maven,jcenter,rpm等。一句话:写好你自己的开源项目库,然后放到中央仓库中,供其他人或自己使用;使用也很方便,就是如上面那样子引入,然后gradle自动编译就好。
具体的使用方式:
到https://bintray.com 注册一个账号,记住你注册时的 账号和APIkey(个人信息编辑页面会看到)
创建你自己的开源项目,这个项目一般是库项目,也可以在一个主项目中创建一个module库项目
接下来就是我们需要耐心和仔细注意的地方了:
首先在你的library项目中的
build.gradle添加以下的构建脚本依赖:buildscript { repositories { jcenter() } dependencies { classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1" } }
5.然后,在当前gradle文件底部添加:
apply from: 'bintray.gradle'
6.这个bintray.gradle文件放在library项目根目录下即可,内容为:
group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID
apply plugin: 'com.jfrog.bintray'
apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += configurations.compile
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
javadoc {
options{
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
links "http://docs.oracle.com/javase/7/docs/api"
title PROJ_ARTIFACTID
}
}
def pomConfig = {
licenses {
license {
name "The Apache Software License, Version 2.0"
url "http://www.apache.org/licenses/LICENSE-2.0.txt"
distribution "repo"
}
}
developers {
developer {
id DEVELOPER_ID
name DEVELOPER_NAME
email DEVELOPER_EMAIL
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId PROJ_ARTIFACTID
artifact javadocJar
artifact sourcesJar
pom{
packaging 'aar'
}
pom.withXml {
def root = asNode()
root.appendNode('description', PROJ_DESCRIPTION)
root.children().last() + pomConfig
}
}
}
}
afterEvaluate {
publishing.publications.mavenJava.artifact(bundleRelease)
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
//user = hasProperty("bintrayUser")?getProperty("bintrayUser"):getProperty("BINTRAY_USER")
//key = hasProperty("bintrayKey")?getProperty("bintrayKey"):getProperty("BINTRAY_KEY")
publications = ['mavenJava']
publish = true
pkg {
repo = 'maven'
name = PROJ_NAME
desc = PROJ_DESCRIPTION
websiteUrl = PROJ_WEBSITEURL
issueTrackerUrl = PROJ_ISSUETRACKERURL
vcsUrl = PROJ_VCSURL
licenses = ['Apache-2.0']
publicDownloadNumbers = true
}
}
artifactory {
contextUrl = 'http://oss.jfrog.org/artifactory'
resolve {
repository {
repoKey = 'libs-release'
}
}
publish {
repository {
repoKey = 'oss-snapshot-local' //The Artifactory repository key to publish to
username = bintray.user
password = bintray.key
maven = true
}
defaults {
//这里的名字和上面红色的名字一致即可,会将其包含的输出上传到jfrog上去
publications('mavenJava')
publishArtifacts = true
}
}
}
7.配置library目录下的gradle.properties,详细的配置内容为:
PROJ_GROUP=com.quicktortoise
PROJ_VERSION=1.0.0
PROJ_NAME=quicktortoise
PROJ_WEBSITEURL=https://github.com/gao746700783/QuickTortoise
PROJ_ISSUETRACKERURL=
PROJ_VCSURL=git@github.com:quicktortoise/QuickTortoise.git
PROJ_DESCRIPTION=android quick Dev
PROJ_ARTIFACTID=com-quicktortoise-dev
DEVELOPER_ID=tortoise
DEVELOPER_NAME=gaoxiaohui
DEVELOPER_EMAIL=tortoise_like@163.com
#BINTRAY_USER=**************
#BINTRAY_KEY=**************
8.执行命令,发布库到中央仓库
gradle bintray
或分开执行 1.gradle bintrayUpload 将库发布到 bintray.com.
gradle bintrayUpload
2.执行 gradle artifactoryPublish 可以发布版本到 oss.jfrog.org.
gradle artifactoryPublish
9.包含到jcenter中央库
先进入此页面:https://bintray.com/bintray/jcenter,点击Include My Package,然后在弹出的对话框中搜索并勾上你的项目,然后 send 即可。
至此,你的仓库发布完毕,等待审核成功,任何人即可在项目中进行引用,比如上述我的库的使用方式为:
compile 'com.quicktortoise:com-quicktortoise-dev:1.0.0'
,因为我的库发布时间还短,尚未审核完毕,所以要等一段时间了。
好了,终于搞定这个了,加油

1713

被折叠的 条评论
为什么被折叠?



