如何使用新的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.
我采用的方法的另一个问题是它收集所有构建变体的类路径,而不是选择一个.
我一直在努力设置一个gradle任务来为我的Android库生成Javadocs,但是当存在与其他库的外部依赖关系时,doc生成失败.这似乎是一个常见的任务,但不知何故似乎没有一个简单的解决方案,例如这个答案将揭示(手动重新生成爆炸 - aar有点荒谬,而且,在Android Studio 3.0甚至是由于新的依赖指令,它不再起作用了).
但是,我注意到通过Android Studio GUI(工具菜单)生成Javadoc工作得很好 - 解析了其他库的依赖性等.这是如何工作的 - 这个菜单是不是利用gradle任务生成Javadoc?
因为我需要使用gradle作为CI的一部分生成Javadoc,所以我觉得很难说有没有记录的方法让它工作,而有一种方法可以通过menues工作.不是Android Studio 工具 - > 生成Javadoc菜单又使用gradle任务吗?由于依赖关系是使用gradle文件列出的,而Javadoc工具菜单显然能够解决这些依赖关系 - 它是如何实现的?它如何获取嵌入在依赖aar库中的jar等?它如何单独使用而不是Android Studio GUI?
我需要通过Bintray将我的库(多模块项目)上传到sonatype存储库.所以我需要为每个模块单独生成Javadoc.
首先,我遇到了这些类似问题中的问题
Gradle Javadoc失败,出现"错误:包...不存在"
从第一个问题的解决方案,我可以解决我从第三方库(retrofit2,gson)和@NonNull注释错误使用的类.
但在我的情况下,我的一个模块(Lib2)依赖于另一个模块(Lib1).
生成Lib2模块的Javadoc时,它的警告package does not exist和cannot find symbol另一个模块的类(Lib1).
并且这两个模块都报告package does not exist了android支持和设计库的错误.
每一个import <packagename>.R;报道cannot find symbol
我的Javadoc生成任务
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
ext.androidJar ="${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
project.android.libraryVariants.all { variant ->
classpath += files(variant.javaCompile.classpath.files)
}
}
Run Code Online (Sandbox Code Playgroud)
Lib1中的依赖项 build.gradle
compile rootProject.appcompat
compile rootProject.design
compile rootProject.retrofit2
compile rootProject.support
compile …Run Code Online (Sandbox Code Playgroud)