【问题标题】:Gradle Javadoc fails with "error: package ... does not exist"Gradle Javadoc 因“错误:包 ... 不存在”而失败
【发布时间】:2015-05-10 16:21:26
【问题描述】:

在为我们开发的库构建 Android Studio 项目的 Javadocs 时,我们的 Gradle 构建脚本失败,出现如下错误:

/MY_LOCAL_PATH/MyClass.java:5:错误:com.google.gson 包不存在 导入 com.google.gson.Gson;

详情:

我们正在使用Gradle 构建一个Android 库,并希望为它构建Javadocs。

Android Studio 项目被配置为需要 Maven dependency 用于 GSON,尽管我猜测它会发生在每个未明确提供 lib 文件的依赖项上。

当然是我们的一堂课,imports com.google.gson.

这是我们的 Gradle 脚本:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion '21.1.2'
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 8000
        versionName "0.8.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.2.4'
}

以及构建文档的预期任务(基于this question):

task generateJavaDocs(type:Javadoc) {
  source = 'src/main/java/com'

  ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
  classpath = files(source) + files(ext.androidJar)

  options.memberLevel = JavadocMemberLevel.PUBLIC
  include '**/*.java'
  exclude '**/BuildConfig.java'
  exclude '**/R.java'
}

完成此任务时,Gradle 失败并出现以下错误:

/MY_LOCAL_PATH/MyClass.java:5: 错误: com.google.gson 包不存在 导入 com.google.gson.Gson;

/MY_LOCAL_PATH/MyClass.java:6: 错误: com.google.gson 包不存在 导入 com.google.gson.JsonParseException;

/MY_LOCAL_PATH/MyClass.java:7: 错误: com.google.gson 包不存在 导入 com.google.gson.JsonSyntaxException;

/MY_LOCAL_PATH/MyClass.java:8: 错误: com.google.gson.reflect 包不存在 导入 com.google.gson.reflect.TypeToken;

有人对如何解决这个问题有想法吗?

谢谢!

【问题讨论】:

  • 带有说明的有用帖子:andydyer.org/blog/2014/09/29/delombok-and-javadoc-with-gradle,但请注意,他排除了他有来源的包,因此他可以按目录排除它们。
  • 使用exclude 对你有用吗?
  • 你的问题解决了吗?
  • 排除对我不起作用。实际上,我能找到的唯一解决方法是在 javadoc gradle 任务的类路径中添加构建我的 .aar 时生成的“classes.jar”。但这很混乱,并且改变了构建的顺序。有人找到更清洁的方法吗?我的意思是这似乎是一个非常典型的问题,没有适当的解决方案

标签: android gradle gson javadoc android-gradle-plugin


【解决方案1】:

我正在处理使用 gradle 构建的 java-library 项目,我在 gradle javadocs 任务中遇到了类似的问题:

task javadocs(type: Javadoc) {
  source = sourceSets.main.java.srcDirs
  exclude '**/R.html', '**/R.*.html', '**/index.html'
}

我的库依赖项是“org.json:json:20180130”,我的 javadocs 任务失败并出现错误:

error: package org.json does not exist

我通过将类路径添加到 javadocs 任务来修复它,如下所示:

task javadocs(type: Javadoc) {
  source = sourceSets.main.java.srcDirs
  classpath = sourceSets.main.runtimeClasspath
  exclude '**/R.html', '**/R.*.html', '**/index.html'
}

如果您使用的是 Android 插件而不是标准 java 库,您可以像这样获得类路径:

classpath += project.files(android.getBootClasspath().join(File.pathSeparator))

我希望这对某人有所帮助。

【讨论】:

  • 错误:无法为 com.android.build.gradle.internal.api.DefaultAndroidSourceSet 类型的源集 main 获取未知属性“runtimeClasspath”。
  • @PapaWhiskey 你可能正在使用android插件,这个例子是为java-library插件创建的,让我看看它在android上应该是什么样子。
  • @PapaWhiskey 我编辑了答案,看看它是否适合你:-)
  • 已经有了 getBootClasspath...但是我找到了这个页面是因为为 android studio 搜索 javadoc...甚至 OP 说“我们的 Gradle 构建脚本在为 Android Studio 项目构建 Javadocs 时失败” ...否则我不会发表评论...今天会再玩一些,如果我得到修复,我会发布
  • 无法编辑之前的评论,但这个解决方案 link 对我来说总体上很有效
猜你喜欢
  • 2020-03-06
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多