You need to enable JavaScript to run this app. Gradle7 Kotlin DSL下升级Asciidoctor为jvm版本报错问询
优惠活动
大模型
产品
解决方案
定价
更多

Gradle7 Kotlin DSL下升级Asciidoctor为jvm版本报错问询

Asciidoctor Gradle插件升级(Kotlin DSL)调整方案

两个报错的根因说明

  • 第一个报错是因为新版org.asciidoctor.jvm.convert插件已经移除了默认注册的asciidoctor依赖配置,所以在dependencies块中调用asciidoctor()方法时找不到对应定义
  • 第二个报错是因为新版插件的Asciidoctor任务API发生了变更,旧的配置写法和新的任务接收器类型不匹配

具体调整步骤

  • 第一步:替换插件ID

    将原有plugins块中的旧版插件声明,替换为新版插件,版本选择3.x+稳定版即可,示例:
    // 替换前:id("org.asciidoctor.convert") version "2.4.0"
    id("org.asciidoctor.jvm.convert") version "3.3.2"
    
  • 第二步:新增自定义依赖配置

    在plugins块之后、dependencies块之前,新增asciidoctorExt配置声明,替代旧版默认的asciidoctor配置:
    val asciidoctorExt by configurations.creating
    
  • 第三步:修改依赖声明

    将dependencies块中原有的asciidoctor开头的依赖,替换为asciidoctorExt开头:
    // 替换前:asciidoctor("org.springframework.restdocs:spring-restdocs-asciidoctor")
    asciidoctorExt("org.springframework.restdocs:spring-restdocs-asciidoctor")
    
  • 第四步:调整asciidoctor任务配置

    修改原tasks.asciidoctor块,关联自定义的asciidoctorExt配置,同时适配新插件的API写法:
    tasks.asciidoctor {
        dependsOn(tasks.test)
        // 关联自定义依赖配置,加载spring-restdocs-asciidoctor的扩展能力
        configurations(asciidoctorExt)
        // 适配新插件的目录设置API
        sourceDir.set(file("src/main/docs"))
        inputs.dir(snippetsDir)
        attributes["snippets"] = snippetsDir
        attributes["docinfo1"] = ""
        attributes["environment-${project.properties["spring.profiles.active"]}"] = true
    }
    

完整修改后的配置示例

plugins {
    id("org.asciidoctor.jvm.convert") version "3.3.2"
    kotlin("jvm") version "1.5.0"
    kotlin("plugin.spring") version "1.5.0"
}

val asciidoctorExt by configurations.creating

repositories {
    mavenCentral()
    maven { url = uri("https://repo.spring.io/milestone") }
    maven { url = uri("https://repo.spring.io/snapshot") }
    jcenter()
}

dependencies {
    asciidoctorExt("org.springframework.restdocs:spring-restdocs-asciidoctor")
    // 其余原有依赖保持不变
}

val snippetsDir by extra { file("build/generated-snippets") }
tasks.test {
    useJUnitPlatform()
    outputs.dir(snippetsDir)
    mustRunAfter(tasks.flywayMigrate)
}

tasks.asciidoctor {
    dependsOn(tasks.test)
    configurations(asciidoctorExt)
    sourceDir.set(file("src/main/docs"))
    inputs.dir(snippetsDir)
    attributes["snippets"] = snippetsDir
    attributes["docinfo1"] = ""
    attributes["environment-${project.properties["spring.profiles.active"]}"] = true
}

内容的提问来源于stack exchange,提问作者MrAndre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 04:15:04