首先我们看看写的gradle代码的含义:
compile 'com.first:FirstLibrary:1.0.0'
- 1
其组成是这样的:
GROUP_ID:ARTIFACT_ID:VERSION
GROUP_ID指的是com.first,类似于包名;ARTIFACT_ID指的是FirstLibrary,类似于类库的名称;VERSION是1.0.0,也就是版本号。
- 注册账号
在bintray.com上面注册一个账号,然后登录进去。
注册登录地址:https://bintray.com/login?forwardedFrom=%2Flogin
- 登进来之后创建仓库
- 创建一个package,点击刚才创建的MyMaven,进去后点击右下角的Add New Package
截止到现在 Bintrary上面环境已经完成了,下面说下如何将一个项目中的库文件上传到jcenter上
- 创建一个新的项目,然后创建一个model,这个就不详细描述了,如下图所示,咱们的目的是将firstlibrary上传到jcenter
- 配置项目的根gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.novoda:bintray-release:0.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 配置库(项目中的Model—firstlibrary的)gradle,这个地方一定不要配置到项目的gradle下,
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'
publish {
repoName = 'MyMaven'//远程仓库名字,不指明,默认是上传到maven
userOrg = 'developwb'//bintray.com用户名
groupId = 'com.first'//jcenter上的路径,bintray上创建Package时填写的Version control项
artifactId = 'FirstLibrary'//项目名称,bintray上创建Package时填写的Name项
publishVersion = '1.0.0'//版本号
desc = '描述'//描述,不重要
website = '111'//网站,最好有,不重要
}
android {
compileSdkVersion 26
defaultConfig {
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 在终端输入如下命令
gradlew clean build bintrayUpload -PbintrayUser=developwb -PbintrayKey=********************* -PdryRun=false
其中PbintrayUser 是你的bintray账户名字 PbintrayKey我们需要到bintrary里面找,如下图
现在PbintrayUser和PbintrayKey我们都知道了,放到上面的命令中,对号入座,然后点击回车。。。坐等上传成功
看到下图中的successful就表示上传成功了。
- 提交到jcenter
·这时候我们需要在下面填写审核描述(乱填都行不能不填,不填可能会审核失败!)(如下图↓↓↓)
·填写完成直接Send,一般一天之后就会审核通过,通过后项目的右下角的Add to JCenter 按钮就会消失!
审核通过后就可以引用了
compile 'com.first:FirstLibrary:1.0.0'
- 1
- 上传常见错误
·下面我们来看看上传过程中的常见错误(如果你成功了可以不用看下面):
(1).HTTP/1.1 404 Not Found [message:Repo ‘MyMaven’ was not found]
找不到Maven库,可能是你没有创建,或者是你repoName的值跟你创建的仓库名字不一样,还有可能是你的userOrg也没有写对!
(2).HTTP/1.1 400 Bad Request [message:Please enter a valid VCS URL for your OSS package.]
找不到包,在对应的Maven库下没有创建对应的包,或者是你artifactId的值跟你创建的包名字不一样!
第三个坑:Execution failed for task ':core:lint'.
Execution failed for task ':core:lint'.
> Lint found errors in the project; aborting build.
在上传过程中执行了lint检查,所以可能会报上面的错误。解决方法就是避免lint的检查,在每个module的gradle下面就要添加如下配置:
android {
lintOptions {
abortOnError false
}
}
第四个坑:Execution failed for task ':core:mavenAndroidJavadocs'.
Execution failed for task ':core:mavenAndroidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/zhou/git/app/core/build/tmp/mavenAndroidJavadocs/javadoc.options'
在上传过程中执行了javadoc检查,所以可能会报上面的错误。解决方法就是避免javadoc的检查,在项目根目录下的gradle下面就要添加如下配置:
allprojects {
repositories {
jcenter()
}
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
作者:王宗耀 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/wzy901213