外部化build.gradle.kts中的任务



目前,我已经为中心build.gradle.kts中的所有gradle任务进行了配置。由于这个文件太长,我计划将至少一些任务分配到它们自己的文件中。

目前,我的build.gradle.kts看起来有点像以下内容:

import org.asciidoctor.gradle.jvm.AsciidoctorTask
val revDate = System.getenv()["revdate"] ?: SimpleDateFormat("yyyy-MM-dd").format(Date())
val revNumber = System.getenv()["revnumber"] ?: "DEV-Version"
plugins {
...
id("org.asciidoctor.jvm.convert") version "3.1.0"
...
}
tasks.withType<AsciidoctorTask>().configureEach {
setSourceDir(file("src/docs"))
setOutputDir(file("$buildDir/docs"))
attributes(
mapOf(
"source-highlighter" to "rouge",
"toc"                to "left",
"toclevels"          to 2,
"idprefix"           to "",
"idseparator"        to "-",
"revnumber"          to "$revNumber",
"revdate"            to "$revDate"
)
)
}

如果调用ascidctor Tasks,上面的build.gradle.kts会生成我的文档。现在我已经尝试通过使用来外部化上面的配置

apply {
from("gradle/asciidoctor.gradle.kts")
}

在build.gradle.kts中,并进一步定义上面使用的文件:

#gradle/asciidoctor.gradle.kts
import org.asciidoctor.gradle.jvm.AsciidoctorTask
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath("org.asciidoctor:asciidoctor-gradle-jvm:3.1.0")
}
}
apply{
plugin("org.asciidoctor.jvm.convert")
}
tasks.withType<AsciidoctorTask>().configureEach {
setSourceDir(file("src/docs"))
setOutputDir(file("$buildDir/docs"))
attributes(
mapOf(
"source-highlighter" to "rouge",
"toc"                to "left",
"toclevels"          to 2,
"idprefix"           to "",
"idseparator"        to "-",
"revnumber"          to "$project.revNumber",
"revdate"            to "$project.revDate"
)
)
}

不幸的是,这不能正常工作,并且给了我一个例外,即找不到具有给定id("org.asciidoctor.jvm.convert"(的插件。

我使用的是6.6.1级。

我错过了什么,我应该做些什么?

在包含的脚本中,您只能获得默认环境。您无法访问主项目文件中应用的插件,也无法应用任何其他插件。这与GroovyDSL不同,而且没有办法绕过它

相反,您必须将此逻辑放入buildSrc中。GradleKotlin提供了预编译的脚本插件,使之变得非常容易。您可以创建一个文件buildSrc/src/main/kotlin/my-plugin.gradle.kts,并在其中添加与包含的脚本中添加的代码相同的代码。

然后,在你的项目中,你可以在插件块中添加这个:

plugins { 
`my-plugin`
}

此外,buildSrc/build.gradle.kts必须包含:

plugins {
`kotlin-dsl`
}
repositories {
jcenter()
gradlePluginPortal()
}

有关更多信息,请参阅Gradle文档。

最新更新