Mat*_*ola 47 android javadoc gradle android-gradle-plugin
如何使用新的Gradle构建系统为Android项目生成JavaDoc?
这是我提出的,但它不起作用.
task generateJavadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
ext.cp = android.libraryVariants.collect { variant ->
variant.javaCompile.classpath.files
}
classpath = files(ext.cp)
}
Run Code Online (Sandbox Code Playgroud)
主要问题是我没有在类路径上获得相应的android.jar,因此JavaDocs中的某些链接无法解析.我必须找到一种方法来获取类路径上所有必需的jar.
我采用的方法的另一个问题是它收集所有构建变体的类路径,而不是选择一个.
Fli*_*bor 38
对于Android gradle插件1.1.2+(com.android.tools.build:gradle:1.1.2+)
libraryVariants - 不再起作用了
使用:
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("../javadoc/")
failOnError false
}
Run Code Online (Sandbox Code Playgroud)
destinationDir = file("../ javadoc /") - 在项目目录的根目录下找到javadocs(这样jenkins javadoc插件可以找到它并在特殊的Document面板中显示)
failOnError false - 用于抑制可能导致jenkins构建失败的警告
小智 24
Gradle 1.11 - Gradle Plugin 0.10.0
替换android.plugin.sdkDirectory为android.sdkDirectory
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
options.links("http://docs.oracle.com/javase/7/docs/api/");
options.links("http://d.android.com/reference/");
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ola 11
我最终解决的解决方案如下:
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
}
}
Run Code Online (Sandbox Code Playgroud)
Xavier Ducrohet证实这是adt-dev小组的做法(有警告),https: //groups.google.com/forum/#!searchin/adt-dev/javadoc/adt-dev/seRizEn8ICA/bafEvUl6mzsJ .
使用android gradle工具1.10.+获取android SDK目录与以前不同.您必须更改以下内容:
android.sdkDirectory
Run Code Online (Sandbox Code Playgroud)
代替
android.plugin.sdkDirectory
Run Code Online (Sandbox Code Playgroud)
这是问题的完整解决方案:
android.applicationVariants.all { variant ->
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
title = "Documentation for Android $android.defaultConfig.versionName b$android.defaultConfig.versionCode"
destinationDir = new File("${project.getProjectDir()}/doc/compiled/", variant.baseName)
source = variant.javaCompile.source
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
description "Generates Javadoc for $variant.name."
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PRIVATE
options.links("http://docs.oracle.com/javase/7/docs/api/");
options.links("http://developer.android.com/reference/");
exclude '**/BuildConfig.java'
exclude '**/R.java'
}
}
Run Code Online (Sandbox Code Playgroud)
Android jar似乎在属性中android.plugin.runtimeJarList.它没有在任何地方记录,因此它可能随时中断.
我已经改进了您的解决方案,以适应不同的构建变体:
android.applicationVariants.all { variant ->
def name = variant.name
task "javadoc$name"(type: Javadoc) {
description = "Generates javadoc for build $name"
destinationDir = new File(destinationDir, variant.baseName)
source = files(variant.javaCompile.source)
classpath = files(android.plugin.runtimeJarList, variant.javaCompile.classpath)
exclude '**/R.html', '**/R.*.html'
}
}
Run Code Online (Sandbox Code Playgroud)
通常在主分支上执行javadoc是没有意义的,因为您可能依赖于产品风格中的一些东西.即使调试与发布也可能存在一些差异.您当然可以选择要使用的默认变体.所以你可以做点什么,
task javadoc(dependsOn: javadocDebug)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23999 次 |
| 最近记录: |