[英]How to provide generated data-binding classes in a Gradle Javadoc task?
With this Gradle task I've used to extract AAR, in order to generate Javadoc:通过这个 Gradle 任务,我用来提取 AAR,以生成 Javadoc:
task javadoc(type: Javadoc) {
doFirst {
configurations.implementation.filter { it.name.endsWith('.aar') }.each { aar ->
copy {
from zipTree(aar)
include "**/classes.jar"
into "$buildDir/tmp/aarsToJars/${aar.name.replace('.aar', '')}/"
}
}
}
failOnError false
options.linkSource true
options.links("https://docs.oracle.com/en/java/javase/11/docs/api/")
options.links("https://developer.android.com/reference/")
title = "Colorpicker Library ${versionName} API"
source = android.sourceSets.main.java.srcDirs
classpath = files(new File("${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"))
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
classpath += fileTree(dir: "$buildDir/tmp/aarsToJars/")
configurations.implementation.setCanBeResolved(true)
classpath += configurations.implementation
destinationDir = file("${project.buildDir}/outputs/javadoc/")
exclude "**/BuildConfig.java"
exclude "**/R.java"
}
It fails since I've enabled androidx.databinding
7.2.1
inside the library module:它失败了,因为我在库模块中启用
androidx.databinding
7.2.1
:
> Task :library:javadoc
...\ColorPickerDialogFragment.java:24: error: package com.acme.databinding does not exist
import com.acme.databinding.DialogColorPickerBinding;
^
...\ColorPickerDialogFragment.java:46: error: cannot find symbol
DialogColorPickerBinding mDataBinding;
^
symbol: class DialogColorPickerBinding
location: class ColorPickerDialogFragment
2 errors
How can I add these generated sources to classpath
?如何将这些生成的源添加到
classpath
? Ignoring the class import
doesn't seem to be an option.忽略类
import
似乎不是一种选择。 Or does javadoc
have to depend on the task, which generates these (bad timing)?或者
javadoc
是否必须依赖于生成这些(时间错误)的任务? In general, exclude "**/ColorPickerDialogFragment.java"
is not the answer I'm looking for.一般来说,
exclude "**/ColorPickerDialogFragment.java"
不是我正在寻找的答案。
Extracting the built AAR and putting it on classpath
provides the generated classes -提取构建的 AAR 并将其放在
classpath
中提供生成的类 -
but it's a whole lot more elegant to reference the intermediate classes.jar
already:但是已经引用了中间
classes.jar
更加优雅:
task javadoc(type: Javadoc) {
...
doFirst {
...
def aar_main = new File("$buildDir/intermediates/aar_main_jar")
if (aar_main.exists()) {
copy {
from aar_main
include "**/classes.jar"
into "$buildDir/tmp/aarsToJars/aar_main_jar/"
}
}
}
}
One can also check .exists()
before already:也可以在之前检查
.exists()
:
javadoc.onlyIf {
new File("$buildDir/intermediates/aar_main_jar").exists()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.