我有一个 docs.gradle
文件,其中
apply plugin: "org.jetbrains.dokka"
import org.jetbrains.dokka.gradle.DokkaTask
....
我从模块级 build.gradle 文件应用它
apply from: '../gradle/docs.gradle'
但我明白了
Could not compile script ...
script <path to docs.gradle> : 3: unable to resolve class org.jetbrains.dokka.gradle.DokkaTask
如果将导入行放置在任何 build.gradle
文件(根或模块级别)中,则接受导入行
异常(exception):
* Exception is:
org.gradle.groovy.scripts.ScriptCompilationException: Could not compile script '..../gradle/docs.gradle'.
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.wrapCompilationFailure(DefaultScriptCompilationHandler.java:192)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileScript(DefaultScriptCompilationHandler.java:141)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileToDir(DefaultScriptCompilationHandler.java:95)
at org.gradle.groovy.scripts.internal.BuildOperationBackedScriptCompilationHandler$2.run(BuildOperationBackedScriptCompilationHandler.java:54)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
最佳答案
Gradle 插件可以通过两种方式应用:使用推荐的 plugins DSL (使用 plugins { ... }
block )或 legacy plugins application方式(使用 buildscript { ...}
和 apply plugin: "$pluginId"
)
但是插件 DSL 在脚本插件中不可用(请参阅 plugins dsl limitations ),因此您需要使用旧版插件应用程序语法。
因此,您只需将缺少的 buildscript
block 添加到您的 docs.gradle
脚本中,即可为 Gradle 提供解决“org.jetbrains.dokka”问题的方法不是 Gradle 核心插件的插件:
docs.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.0"
}
}
apply plugin: "org.jetbrains.dokka"
import org.jetbrains.dokka.gradle.DokkaTask
// ...
不幸的是,存在这个已知问题 #1262 - Third-party plugins cannot be applied by ID from external build scripts ..
解决方法是通过其实现类而不是其 ID 应用插件(请参阅 this comment ),如下所示
docs.gradle
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.0"
}
}
// apply plugin: 'org.jetbrains.dokka' <-- apply by ID not supported here.
apply plugin : org.jetbrains.dokka.gradle.DokkaPlugin // <-- this works fine
import org.jetbrains.dokka.gradle.DokkaTask
关于android - Gradle:无法解析从非 build.gradle 文件导入的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74307975/