通過這個 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"
}
它失敗了,因為我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
如何將這些生成的源添加到classpath?忽略課程import似乎不是一種選擇。還是javadoc必須依賴于生成這些(錯誤時機)的任務?一般來說,exclude "**/ColorPickerDialogFragment.java"這不是我正在尋找的答案。
uj5u.com熱心網友回復:
提取構建的 AAR 并將其放在上面classpath提供了生成的類 -
但是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/"
}
}
}
}
.exists()之前也可以檢查:
javadoc.onlyIf {
new File("$buildDir/intermediates/aar_main_jar").exists()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494189.html
上一篇:發現任務':url_launcher_android:syncReleaseLibJars'(型別'LibraryAarJarsTask')的配置有問題
