jdO*_*ill 26 android javadoc gradle doclet android-gradle-plugin
我正在为API构建JavaDoc,其中API中的类依赖于R.java.我想构建引用缺少的R.java文件的Javadoc w/o符号错误,即使我设置failOnError false构建成功但我们的Jenkins作业会在成功构建中发生错误时将构建报告为失败.下面的任务将成功创建javadocs,但会在构建过程中报告与未找到R.java相关的错误.
android.libraryVariants.all { variant ->
def name = variant.name.capitalize()
task("generate${name}Doclava", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
title = null
// use android.bootClasspath instead of building our own path to android jar
//ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
// hardcoded path to generated R.java file to avoid javadoc compile issues
ext.R = "build/generated/source/r/minSDK15/release"
classpath += project.files(android.sourceSets.main.java.srcDirs, variant.javaCompile.classpath.files, android.bootClasspath)
destinationDir = file("${project.docsDir}/${name}/doclava")
options {
docletpath = configurations.jaxDoclet.files.asType(List)
doclet "com.google.doclava.Doclava"
bootClasspath new File(System.getenv('JAVA_HOME') + "/jre/lib/rt.jar")
addStringOption "XDignore.symbol.file", "-quiet"
addStringOption "hdf project.name", "${project.name}"
addStringOption "federate android", "http://d.android.com/reference"
addStringOption "federationxml android", "http://doclava.googlecode.com/svn/static/api/android-10.xml"
addStringOption "federate JDK", "http://download.oracle.com/javase/6/docs/api/index.html?"
addStringOption "federationxml JDK", "http://doclava.googlecode.com/svn/static/api/openjdk-6.xml"
addStringOption "templatedir", "${project.docsDir}/${name}/doclava/templates"
addStringOption "apixml", "${project.docsDir}/${name}/doclava/api-${project.version}.xml"
addStringOption "since doclava/since/api-1.0.0.xml", "1.0.0"
addStringOption "apiversion", "${project.version}"
failOnError false
}
// exclude generated files
exclude '**/BuildConfig.java'
exclude '**/R.java'
// exclude internal packages
exclude '**/internal/**'
options.addStringOption "apixml", "${project.docsDir}/${name}/doclava/api-${project.version}.xml"
}
}
Run Code Online (Sandbox Code Playgroud)
我试过的一些事情:
classpath += project.files(android.sourceSets.main.java.srcDirs, variant.javaCompile.classpath.files, android.bootClasspath, ext.R)
这成功地删除了错误,因此构建成功,但生成的javadoc在javadoc中有到R.*.class的空链接.
exclude '**/R.java'从排除列表中删除该行,同时不包括类路径中R.java的路径.这成功地删除了错误并且构建成功,但生成的javadoc具有到R.*.class文件的链接.
似乎exclude语句是从类路径而不是javadoc中排除的.任何深入了解如何生成类依赖于R.java但在javadoc输出中不包含R.java的javadoc将深深体会到.
在 Android Studio 上,转到以下设置(可以通过 访问设置File > Settings):
外观和行为 > 范围
您应该能够在此处浏览您的项目文件。现在选择您的文件并使用最右侧的按钮将它们包含/排除在您的范围中(您可以排除或不包含R.java文件,BuildConfig.java文件)。确保底部的“共享范围”复选框已选中,并且您的范围有一个容易记住的名称。
接下来转到 Javadoc 生成器对话框 ( Tools > Generate Javadoc)。选择底部单选按钮(“自定义范围”),然后从菜单中选择您之前创建的范围。您还可以为 Javadocs 配置其他设置。
最后单击“确定”,您应该已经生成了 Javadocs。
希望这可以解决您的问题。
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |