Gradle Javadoc失败,出现"错误:包...不存在"

mll*_*llm 7 android javadoc gradle gson android-gradle-plugin

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

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

细节:

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

Android Studio项目配置为需要Maven dependencyfor 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'
}
Run Code Online (Sandbox Code Playgroud)

以及预期构建文档的任务(基于此问题):

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'
}
Run Code Online (Sandbox Code Playgroud)

完成此任务后,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;

有人想过如何解决这个问题?

谢谢!

Tom*_*dic 5

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

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

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

error: package org.json does not exist
Run Code Online (Sandbox Code Playgroud)

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

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

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

classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人。