关于发布jcenter遇到的坑

转自:https://blog.csdn.net/anydrew/article/details/51286998

我遇到的问题其实并不是在发布jcenter时出现的,而是在引用一个库时,库里有一段发布的代码,在研发本地环境编译都没有问题,但是在jenkins上编译就过不了,最后把库里的发布代码注释掉,加上

lintOptions {       
      abortOnError false   
 }

终于编译过了,这段话下面有解释,也可以自行百度了解更深层次的知识。

这期间出现的问题是编译到javadoc那段代码时报错:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':library:javadoc'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): 'D:\Program Files (x86)\Jenkins\workspace\........javadoc\javadoc.options'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.


关于这个问题也可以按Stack Overflow上的解决方法,添加:

 tasks.withType(Javadoc).all {
         enabled = false
  }
我没有测试,我直接把发布代码注释掉了。


前言

最近尝试将项目发布到 jcenter,体验一下被 gradle 一句话引入的快感。步骤基本按照 Hongyang 文章来的,但是实际操作过程中遇到了不少的问题,着实原因大致如下:

  1. Android Studio 的 bintray-release 插件版本不一致
  2. Gradle 版本不一致,导致语法有差异
  3. 注释采用中文,导致无法正常生成 Javadoc

由于网上这方面的资料比较少,所以针对自己的开发环境写出解决方案,随着插件版本的升级,这些方法可能失效,但思路相同。希望跟我遇到同样问题的人,能够快速找到答案。

测试环境

Gradle: 2.10 
classpath ‘com.android.tools.build:gradle:2.0.0’ 
classpath ‘com.novoda:bintray-release:0.3.4’

Lint found errors in the project

Lint 检查默认是开启的,Lint 会检查项目中的语法错误,如果没有通过则无法继续。只需要在 Module 的 build.gradle 添加如下代码:

android {
    lintOptions {
        abortOnError false
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

编码问题

在 windows 下 javadoc 默认的是系统编码,Windows 就是 GBK 编码。所以一旦 java 文件中出现中文注释就会报错,提示无法映射的GBK编码。

task javadoc(type: Javadoc) {
    options.encoding = "utf-8"
}
  • 1
  • 2
  • 3

Javadoc 出错

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':quickIndexView:mavenAndroidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): 'C:\Users\Administrator\Desktop\AS\QuickIndexView\quickIndexView\buil
d\tmp\mavenAndroidJavadocs\javadoc.options'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这个和上面的问题一样,需要 javadoc 的编码。但是我为了方便起见,去掉了 javadoc 的 task,同样也成功了。

在 Project 的 build.gradle 中加入以下代码:

tasks.getByPath(":要上传的库Model名称:mavenAndroidJavadocs").enabled = false
  • 1

附录

参考:《Android 项目打包到 JCenter 的坑》

猜你喜欢

转载自blog.csdn.net/qq_36946260/article/details/80827470