You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Asciidoc中引用源代码声明的常量实现文档内容动态更新?

实现方案

这个需求完全可以实现,常用的落地方式有两种:

方案一:属性注入+构建流程联动(门槛最低,推荐)

  • 第一步:在Asciidoc文档内用内置属性语法做占位,不需要写死端口值:
// 可以在文档头部先加默认值兜底,没有注入属性时就用默认值
:service-port: 8081

// 正文引用位置直接写占位符
你可通过以下地址访问服务:`https://server:{service-port}/...`
  • 第二步:在构建文档的流程中新增一步,读取Java常量类中的端口值,在渲染Asciidoc时将值注入为文档属性,不需要修改原adoc文件:
    • 如果用Gradle构建:
      // 从Java常量类中提取端口值
      def servicePort = new File('src/main/java/com/your/package/MyClass.java').text.find(/public static final String SERVICE_PORT = "(\d+)"/) { it[1] }
      // 给asciidoctor任务注入属性
      asciidoctor {
          attributes 'service-port': servicePort
      }
      
    • 如果用命令行直接构建:
      先通过脚本读取出当前常量的端口值,再调用asciidoctor时通过参数传入:
      asciidoctor -a service-port=${你读取到的端口值} 你的文档.adoc
      

方案二:自定义Asciidoctor扩展(零额外配置,适合复杂场景)

如果用AsciidoctorJ渲染文档,可以写一个极简的预处理器扩展,在文档渲染阶段直接加载指定常量类,读取对应常量值自动注入为文档属性,不需要额外写构建脚本,每次渲染都会自动和当前代码的常量值同步。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:02