#gradle #build.gradle #gradle-kotlin-dsl #asciidoctor
Вопрос:
Я пытаюсь обновить asciidoctor, так как старый больше не поддерживается в gradle версии 7. Проблема в том, что я не уверен, как обновить его из моего текущего кода gradle kotlin. (Я нашел только один пример с groovy). Код gradle, который у меня есть в настоящее время, выглядит примерно следующим образом:
plugins {
id("org.asciidoctor.convert") version "2.4.0"
....
kotlin("jvm") version "1.5.0"
kotlin("plugin.spring") version "1.5.0"
}
....
repositories {
mavenCentral()
maven { url = uri("https://repo.spring.io/milestone") }
maven { url = uri("https://repo.spring.io/snapshot") }
jcenter()
}
dependencies {
....
asciidoctor("org.springframework.restdocs:spring-restdocs-asciidoctor")
}
val snippetsDir by extra { file("build/generated-snippets") }
tasks.test {
useJUnitPlatform()
outputs.dir(snippetsDir)
mustRunAfter(tasks.flywayMigrate.get())
}
tasks.asciidoctor {
dependsOn(tasks.test.get())
sourceDir("src/main/docs")
inputs.dir(snippetsDir)
attributes["snippets"] = file(snippetsDir)
attributes["docinfo1"] = ""
attributes["environment-${project.properties["spring.profiles.active"]}"] = true
}
Со следующими ошибками, когда я меняю org.asciidoctor.convert
на org.asciidoctor.jvm.convert
:
Expression 'asciidoctor' cannot be invoked as a function. The function 'invoke()' is not found
И:
Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public val TaskContainer.asciidoctor: TaskProvider<AsciidoctorTask> defined in org.gradle.kotlin.dsl
Пример, который я нашел в Интернете, выглядит так:
configurations {
asciidoctorExt
}
dependencies {
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
// …
}
asciidoctor {
configurations 'asciidoctorExt'
// …
}
Может быть, кто-нибудь объяснит, что мне нужно изменить, чтобы я мог обновить свою версию asciidoctor.
Ответ №1:
Способ, которым я заставил это работать, таков:
plugins {
id("org.asciidoctor.jvm.convert") version "2.4.0"
}
val asciidoctorExt by configurations.creating
dependencies {
asciidoctorExt("org.springframework.restdocs:spring-restdocs-asciidoctor:2.0.5.RELEASE")
// ...
}
val snippetsDir by extra { file("${buildDir}/generated-snippets") }
val test = tasks.named<Test>("test") {
outputs.dir(snippetsDir)
}
tasks.named<org.asciidoctor.gradle.jvm.AsciidoctorTask>("asciidoctor") {
dependsOn(test)
inputs.dir(snippetsDir)
configurations("asciidoctorExt")
setSourceDir("src/doc/asciidoc")
}