使用 Arquillian 和 Docker 验证 AsciidoctorJ 在 WildFly 中正常工作

作者:Maxime Gréau -

我们很高兴地宣布 Asciidoctor 大家庭的最新成员:Docker AsciidoctorJDocker AsciidoctorJ 项目确保任何部署到 Java EE 应用服务器* 的应用程序都可以使用 AsciidoctorJ。

* 目前仅测试了 WildFly欢迎提交拉取请求!

项目说明

该项目提供

一个 Dockerfile

构建一个包含 WildFly 8.2、AsciidoctorJ 1.5.2 和 AsciidoctorJ PDF 1.5.0 的 Docker 镜像

Arquillian 测试

在 Docker 容器中使用 AsciidoctorJ 将 AsciiDoc 文件转换为 HTML 和 PDF 文件

AsciidoctorJ WildFly Docker containers managed by Arquillian
图 1. Arquillian & Docker 在 WildFly 中集成测试 AsciidoctorJ 的强大功能

了解更多!

一篇博文 解释了我们如何在 WildFly Docker 容器中执行 AsciidoctorJ 的 Arquillian 测试。我们将讨论

想了解更多?阅读完整博文以获取所有详细信息。


Asciidoclet 1.5.0 已发布!

作者 John EricksenBen Evans -

Asciidoctor 1.5.0AsciidoctorJ 1.5.0 发布之后,Asciidoclet 的 1.5.0 版本也已发布,其中包含多项重要新功能,包括全新的外观与感觉!

什么是 Asciidoclet?

Asciidoclet 允许 Java 开发人员使用便携且丰富的 AsciiDoc 语法编写 Javadoc 注释,而非 HTML。

简而言之,为什么还要写像这样的混乱的 Javadoc?

/**
 * This class has the following features:
 * <ul>
 *   <li>Support for <strong>foo</strong></li>
 *   <li>Support for bar</li>
 * </ul>
 */
public class Thing implements Something { ... }

……而不是像这样写整洁的 Javadoc!

/**
 * This class has the following features:
 *
 * - Support for *foo*
 * - Support for bar
 */
public class Thing implements Something { ... }

好多了!现在源代码中的注释更容易阅读和编写,并且可以在 Javadoc 之外重用。最重要的是,从 Javadoc 生成的 HTML 仍然看起来很棒(甚至可能更好)。

当然,这个例子只是展示了其可能性的冰山一角。表格、列表、带有语法高亮的代码示例、链接、包含文件以及 Asciidoctor 的所有功能都可以通过轻量级的 AsciiDoc 语法获得。

现在,开发人员可以专注于内容而不是格式,同时仍然能获得美丽的效果。

构件信息

构件信息(jCenter @ Bintray)
组 ID 工件 ID 版本 下载

org.asciidoctor

asciidoclet

1.5.0

pom jar javadoc (jar) sources (jar)

构件信息(Maven Central)
组 ID 工件 ID 版本 下载

org.asciidoctor

asciidoclet

1.5.0

pom jar javadoc (jar) sources (jar)

安装

在 Maven 中,只需将 Asciidoclet doclet 名称和构件添加到 maven-javadoc-plugin 声明中即可

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>2.9</version>
  <executions>
    <execution>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <doclet>org.asciidoctor.Asciidoclet</doclet>
    <docletArtifact>
      <groupId>org.asciidoctor</groupId>
      <artifactId>asciidoclet</artifactId>
      <version>1.5.0</version>
    </docletArtifact>
  </configuration>
</plugin>

请参阅 Asciidoclet 指南,其中包含适用于其他构建系统和所有可用 doclet 选项的示例。

发布亮点

基于 Asciidoctor 1.5.0 构建

Asciidoclet 继承了 Asciidoctor 1.5.0AsciidoctorJ 1.5.0 的所有改进。

Asciidoctor 1.5.0 引入了一些语法更改。有关如何迁移内容的详细信息,请参阅 迁移指南

改进的样式表

Asciidoclet 包含一个默认样式表,其中包含来自 Asciidoctor 1.5.0 的样式。这意味着 Javadoc 中的 AsciiDoc 内容将以与 Asciidoctor 在其他环境中的外观和感觉相似的方式进行渲染。

Javadoc output
图 1. 使用 Java 8 派生样式表的示例 Javadoc

Javadoc 的 HTML 输出在 Java 平台的不同版本之间有所不同,因此 Asciidoclet 会根据其运行的 Java 版本选择合适的样式表。

  • 对于 Java 7 和 8,使用基于默认 Java 8 Javadoc 样式表的样式表。

  • 对于 Java 5 和 6,样式表基于 Java 6 Javadoc 样式表。

如果您想使用自己的样式表,仍然可以通过 Javadoc 的 -stylesheetfile 选项来实现。

AsciiDoc 概述文件

Javadoc 的 -overview 选项允许您指定一个 HTML 文件,该文件将在生成的文档中用作概述或索引页面。这对于较大的项目尤其有用,其中概述可以为用户提供有用的介绍并帮助他们导航 API。

Asciidoclet 现在也支持使用 AsciiDoc 编写的概述文件,并全面支持 AsciiDoc 的功能,如包含文件和文档属性。名为 *.adoc*.ad*.asciidoc*.txt 的概述文件将由 Asciidoclet 处理。其他文件假定为 HTML,并将由 Javadoc 的标准 doclet 处理。

文档属性

Asciidoclet 现在完全支持 Asciidoctor 的 文档属性。这是 Asciidoctor 最强大的功能之一。文档属性是可以传递给 Asciidoctor 以影响最终输出生成方式的参数。

属性在运行 Asciidoclet 时使用一个或多个 -a(或 --attribute)选项指定。--attributes-file 选项从 AsciiDoc 文件中读取属性。在渲染 Javadoc 注释时,这些属性将被传递给 Asciidoctor。

以下是一些关于文档属性在 Javadoc 中可能很有用的示例。

变量替换

Javadoc 注释或概述文件中的属性引用将被替换为属性值。

/**
 * {product-name} will change your life!
 * @version {version}
 */

当 doclet 使用 -a product-name=Foo -a version=1.0 运行时,Asciidoctor 会在生成的 HTML 输出中将所有 {product-name}{version} 属性引用替换为给定的值。这使得在不更改源代码的情况下将值注入 Javadoc 变得非常简单。

条件包含

AsciiDoc 的 条件指令 可以根据属性的存在或缺失来选择性地包含内容。当相同的 AsciiDoc 源在不同环境中重复使用时,这很有用。

例如,如果您想在 Javadoc 概述页面和网站中使用相同的 AsciiDoc 内容,但有一些差异,您可以使用属性来告诉 Asciidoctor 何时包含某些内容。

= Documentation for the Foo project

ifdef::javadoc[]
// content that should only appear in Javadoc
endif::javadoc[]

ifdef::my-website[]
// content that should only appear on the web site
endif::my-website[]

Asciidoclet 在运行时会自动设置 javadoc 属性,因此可以轻松选择仅用于 Javadoc 的内容。当然,您也可以定义自己的属性。

Java 和 Ruby 扩展支持

Asciidoctor 可以使用 Java 或 Ruby 库进行扩展,Asciidoclet 也继承了此功能。

  • Java 扩展在类路径可用时会自动加载,使用 AsciidoctorJ 的 Extension SPI

  • Ruby 库(Gems)使用 -r(或 --require)选项加载。

在使用 --require 选项时,我们建议同时指定 --gem-path 选项以显式设置已安装 gem 的位置。这样做可以确保您的构建保持可移植和可重现。您可以使用 gem-maven-plugin 将 gem 直接安装到您的构建目录中。

许多扩展可用,但对于 Javadoc 作者来说,最有用的一种可能是 Asciidoctor Diagram。让我们看看如何将其与 Asciidoclet 结合使用。

在 Javadoc 中嵌入图表

Asciidoctor Diagram 是一个流行的 Asciidoctor 扩展,它允许您在 AsciiDoc 源中嵌入纯文本图表描述,这些描述在 Asciidoctor 运行时会被渲染成图像。这对于在 Javadoc 中描述软件实现的架构或行为非常有价值。

这是一个包含 PlantUML 顺序图的 Javadoc 注释示例。

/**
 * This class implements the following protocol:
 *
 * [plantuml]
 * ....
 * Alice -> Bob: Authentication Request
 * Bob --> Alice: Authentication Response
 *
 * Alice -> Bob: Another authentication Request
 * Alice <-- Bob: another authentication Response
 * ....
 */
public class AuthServer { ... }

上面的图表在 Javadoc 输出中的显示方式如下:

Example output using Asciidoctor Diagram
图 2. 使用 Asciidoctor Diagram 的示例输出

不错!开发人员可以轻松地以纯文本形式查看和更新图表,而阅读 Javadoc 的用户将看到精美的渲染图像。

还支持许多其他类型的图表,包括 Graphvizblockdiagditaa。有关更多示例,请参阅 Asciidoctor Diagram 的文档

要在 Asciidoclet 中启用 Asciidoctor Diagram 支持:

  1. 安装 Asciidoctor Diagram gem,asciidoctor-diagram

    $ gem install asciidoctor-diagram
  2. 使用以下 doclet 选项运行 Asciidoclet:

    --require asciidoctor-diagram
    --gem-path ${env.GEM_PATH} (1)
    --attribute data-uri (2)
    1 --gem-path ${env.GEM_PATH} 选项告知 Asciidoctor 的 JRuby 运行时在哪里查找 gem(在使用 --require 时),实际上是在内部设置 $GEM_PATH 环境变量。
    2 data-uri 属性是必需的,以便图像数据嵌入到生成的 HTML 文件中。[1]
  3. 欣赏装饰您 Javadoc 的精美图表!

致谢!

我们希望这个新版本能让您的 Javadoc 更加出色。我们感谢所有为 Asciidoclet 做出贡献的人。如果您对如何改进它有什么想法,欢迎通过GitHub 上的仓库提交想法和拉取请求。


1. 如果没有 data-uri 属性,Asciidoctor Diagram 会将图像文件写入一个与生成的 HTML 不匹配的位置。在撰写本文时,此问题正在 Asciidoctor Diagram 中得到解决。有关详细信息,请参阅问题 #39

Asciidoctor.js 1.5.0 发布到 Bower 和 npm!

作者 Guillaume GrossetieAnthonny Quérouil -

发布列车正在运行!Asciidoctor.js 的 1.5.0 版本已发布,现已在 Bowernpm 上可用。此版本是使 Asciidoctor.js 在 JavaScript 生态系统中得到广泛应用的重要一步。

Bower and npm
Asciidoctor in JavaScript.
It was a dream.
Then it was a prototype.
Now, it’s the real deal.
什么是 Asciidoctor.js?

Asciidoctor.js 是在 JavaScript 中使用 Asciidoctor 的官方库。它与 Asciidoctor 共享相同的源代码,并通过 Opal 转译为 JavaScript。使用 Asciidoctor.js,您可以从 JavaScript 转换 AsciiDoc 内容或分析已解析的 AsciiDoc 文档的结构。

升级到 Asciidoctor 1.5.0 时,请参阅迁移指南,了解如何迁移内容。

发布亮点

Asciidoctor.js 就是 Asciidoctor

正如在 Asciidoctor 1.5.0 的发布说明 中提到的,我们努力使 Asciidoctor.js (JavaScript) 和 Asciidoctor core (Ruby) 保持一致。这意味着您可以期望 Asciidoctor.js 能够像原始版本一样解析和转换文档。甚至包含文件也能正常工作!

要使某些功能(如包含文件)正常工作,需要特别注意,因为 JavaScript 是一个与 Ruby 不同的环境,并且 JavaScript 环境之间甚至存在关键差异!

例如,在 Ruby 中读取包含文件只是使用常规的 Ruby IO API 的问题。在浏览器环境中,我们必须使用 XMLHttpRequest(即 Ajax)作为 IO API。如果 Asciidoctor.js 在 Node.js 上运行,我们必须使用 Node IO API fs.readSync() 来使其工作。

请放心,我们正在继续努力消除任何差异,将 Asciidoctor core 的所有出色功能带到 JavaScript。

请继续阅读,了解如何获取 Asciidoctor.js!

使用 Asciidoctor.js 比以往任何时候都更简单

如果您是前端或后端 JavaScript 开发人员,您只需一个命令即可获取最新版本的 Asciidoctor.js。

Bower 包

使用 Bower 安装 Asciidoctor.js
$ bower install asciidoctor.js --save
可选的 --save 标志会自动将包添加到您项目的依赖项中。

安装包后,您可以将以下 script 标签添加到您的 HTML 页面中:

<script src="bower_components/asciidoctor.js/dist/asciidoctor-all.min.js"></script>

asciidoctor-all.min.js 是一个 minified 版本,包含 Asciidoctor core、扩展 API 和 Opal。

这是一个简单的示例,使用 doctype: 'inline' 选项和 showtitle 属性将 AsciiDoc 转换为 HTML5:

var asciidoc = "https://asciidoctor.org.cn[*Asciidoctor*] " +
    "running on https://opalrb.com[_Opal_] " +
    "brings AsciiDoc to the browser!";
var options = Opal.hash2(['doctype', 'attributes'], {doctype: 'inline', attributes: ['showtitle']});
var html = Opal.Asciidoctor.$convert(asciidoc, options);
console.log(html);

请参阅 前端开发指南,了解更多关于 Bower 包的信息。

npm 包

使用 npm 安装 Asciidoctor.js
$ npm install asciidoctor.js --save
可选的 --save 标志会自动将包添加到您项目的依赖项中。

安装包后,首先要做的就是使用 require 加载 asciidoctor.js 模块,然后您就可以开始使用 API 了:

sample.js
var asciidoctor = require('asciidoctor.js')(); (1)
var opal = asciidoctor.Opal; (2)

var processor = null;
var useExtensions = true;

if (useExtensions) {
  processor = asciidoctor.Asciidoctor(true); (3)
}
else {
  processor = asciidoctor.Asciidoctor(); (4)
}

var content = "https://asciidoctor.org.cn[*Asciidoctor*] " +
    "running on https://opalrb.com[_Opal_] " +
    "brings AsciiDoc to Node.js!";
var options = opal.hash2(
    ['doctype', 'attributes'],
    {doctype: 'inline', attributes: ['showtitle']});
var html = processor.$convert(content, options); (5)
console.log(html); (6)
1 加载 Asciidoctor.js 库
2 检索并别名顶级 Opal 命名空间
3 实例化启用扩展的 Asciidoctor
4 实例化不带扩展的 Asciidoctor
5 使用 Asciidoctor.js 将 AsciiDoc 内容转换为 HTML5
6 将 HTML5 输出打印到控制台

将文件另存为 sample.js 并使用 node 命令运行它:

$ node sample.js

您应该会在终端中看到以下输出:

<a href="https://asciidoctor.org.cn"><strong>Asciidoctor</strong></a> running on <a href="https://opalrb.com"><em>Opal</em></a> brings AsciiDoc to Node.js!</p>
要成功使用 Asciidoctor.js,理解如何在 JavaScript 环境中处理 Ruby 对象非常重要。我们建议您浏览 Opal 文档,了解方法名称的映射方式以及它期望的数据类型。

请参阅 后端开发指南,了解更多关于 npm 包的信息。

Asciidoctor.js 在 Node 上如火如荼

Node.js 是 JavaScript 最热门的领域,npm 是管理和分发这种热度的包管理器。我们希望 Asciidoctor.js 成为这个生态系统的一部分。我们也需要它在那里开始构建工具。这就是为什么我们迈出了将 Asciidoctor.js 打包成 npm 包的第一步……实际上是多个!Asciidoctor 现在拥有了一个新的游乐场!

以下是已发布的 npm 包:

asciidoctor.js

Asciidoctor.js 的主要 npm 包

grunt-asciidoctor

一个用于在您的 Grunt 项目中处理 AsciiDoc 源文件的 npm 包

社区已经开始如何使用这些包了:

asciidoc-preview (Atom 编辑器)

Atom 的一个插件,可在您输入时显示文档的预览!

asciidoc-preview (Brackets 编辑器)

Brackets 的一个扩展,可在您输入时显示文档的预览!

grunt-asciidoctor-assemble

@tedbergeron 编写的 Grunt 的静态网站生成器。

当然,仍然存在挑战,但我们会解决它们。前往 Asciidoctor.js 项目参与其中。

让我们玩这个新游戏吧!

JVM 上的 Asciidoctor.js

您没看错。浏览器不是唯一能运行 JavaScript 的地方。(我们不是指像 Node.js 这样从浏览器逃出来的 JavaScript 引擎。)我们说的是最支持多语言的运行时,JVM

Alex Soto 正在努力将 Asciidoctor.js 集成到 AsciidoctorJ 中,这样您就可以在 JVM 上使用它,利用 Nashorndynjs 和其他运行在其上的 JavaScript 引擎。 AsciidocFX 项目已经在 Nashorn 上使用 Asciidoctor.js,所以这不仅仅是一个想法!

为了确保 Asciidoctor.js 在 JVM 上顺利运行,仍然需要解决几个挑战,例如让包含文件工作。前往 AsciidoctorJ 项目参与其中,帮助实现这一目标!

致谢

Asciidoctor.js 与 Asciidoctor core 的对齐是一项重大工作。它需要许多人的投入,他们齐心协力应对这一挑战。

我们尤其要感谢 Opal 开发者,特别是 Adam Beynon、meh 和 Elia Schito,他们使得 Asciidoctor.js 得以实现。他们对我们的工作非常积极响应,对 Opal 进行了更改和修复,并提供了宝贵的输入,使我们能够不断前进。

我们还要感谢 Anthonny Quérouil,他构建了一个 Grunt 构建来编译、聚合和压缩 Asciidoctor.js,并帮助将构件发布到 Bower 和 npm。

感谢所有测试 Asciidoctor.js 的人,无论是直接测试还是通过使用工具。您的参与使 Asciidoctor.js 成为真正强大的工具!

如果您有任何问题或反馈,我们鼓励您参与 讨论列表。我们在那里见!


Asciidoctor Maven 插件 1.5.0 已发布!

作者 Dan Allen -

Storm in Desert

西部地区可能仍在经历旱季,但我们很高兴能为 Maven 用户带来 Asciidoctor Maven 插件 1.5.0 版本,并将其发布到 Maven Central 和 jCenter!

此版本带来了 Asciidoctor 1.5.0AsciidoctorJ 1.5.0 的所有改进,以及对站点插件的增强。与之前的版本一样,该插件基于相同版本的 AsciidoctorAsciidoctorJ 项目(现已使用语义化版本)—— 1.5.0。

构件信息

构件信息(jCenter @ Bintray)
组 ID 工件 ID 版本 下载

org.asciidoctor

asciidoctor-maven-plugin

1.5.0

pom jar javadoc (jar) sources (jar)

构件信息(Maven Central)
组 ID 工件 ID 版本 下载

org.asciidoctor

asciidoctor-maven-plugin

1.5.0

pom jar javadoc (jar) sources (jar)

安装或升级

安装或升级到 1.5.0 版本非常简单。只需更新 pom.xml 中的版本即可。所有必要的依赖项都将通过 Maven 的依赖管理自动拉取。

<plugins>
  <plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>1.5.0</version>
  </plugin>
</plugins>

请参阅 示例项目,复制粘贴即可轻松上手!

升级到 Asciidoctor 1.5.0 时,请参阅迁移指南,了解如何迁移内容。

请参阅 Asciidoctor Maven 插件的手册,了解有关配置选项和插件其他功能的更多信息。

发布亮点

发布到 jCenter

Asciidoctor Maven 插件现已发布到 Bintray 的 jCenter!这意味着您可以更轻松地找到该插件,并且它已发布到 Web 上二进制文件的未来目的地。您可以选择在有新版本时接收 Bintray 的通知。

将非 AsciiDoc 文件复制到输出目录(#67

Asciidoctor Maven 插件现在会将非 AsciiDoc 文件复制到输出目录,因此您可以在 AsciiDoc 源文件夹中放置资源,例如图像或样式表。此更改使 Asciidoctor Maven 插件的行为与 Gradle 插件的行为保持一致。

添加配置以设置 gem 路径并加载附加 gem(#109

您现在可以使用 gemPath 配置选项指定一个或多个 gem 安装目录(即 GEM_PATH)的位置。此设置的主要目的是加载 AsciidoctorJ 中未打包的其他 Ruby 库,例如 asciidoctor-diagram。您可以使用 require 配置选项加载其他库(绝对路径、相对路径或 gem 名称)。

以下是有关如何在 pom.xml 中的插件声明中使用该配置的示例:

<configuration>
  <gemPath>${project.build.directory}/gems-provided</gemPath>
  <requires>
    <require>asciidoctor-diagram</require>
  </requires>
</configuration>
如果您想在构建过程中自动下载和安装 gem,则需要使用 gem-maven-plugin。请参阅 示例项目,复制粘贴即可轻松上手!
独立配置 AsciidoctorJ(#111

在 1.5.0 之前,如果您定义了 GEM_HOMEGEM_PATH 环境变量(通常在使用 RVM 时),Maven 插件会让 JRuby 看到安装在项目外部的 gem。这可能导致构建不可重现。

我们通过清除 GEM_PATH 环境变量(除非它在插件配置中指定)在一定程度上解决了这个问题。但是,GEM_HOME 环境变量直到 AsciidoctorJ 1.5.1 才能正确清除。在此期间,如果 GEM_HOME 设置为构建外部的路径,我们会发出警告,以便您知道手动重置该值(例如,通过运行 rvm use system)。

正确处理 false 和空属性值(#93

0.1.4 版本中存在一个回归,该版本将 false 和空属性值都视为 true。Maven 需要额外的处理才能正确转换这些值。现在可以使用空字符串值,它表示启用属性;或者使用 false 值,它表示禁用属性。例如:

<configuration>
  <attributes>
    <toc/>
    <linkcss>false</linkcss>
  </attributes>
</configuration>

此配置等同于以下 Asciidoctor 的命令行参数:

-a toc -a linkcss!
在 Maven 站点插件中生成 XHTML(#61

Asciidoctor 1.5.0 中最重要的改进之一是添加了 XHTML 后端。简单地说,这个后端输出 XHTML5(符合 XML 标准的 HTML5),而不是通常的简写 HTML5。添加这个后端的主要原因是修复 Asciidoctor Maven 插件中站点模块的行为。Maven 站点插件使用的 XML 解析器将为此而感谢您!

EPUB3 输出

AsciidoctorJ 开箱即用地提供了与 Asciidoctor EPUB3 转换器的集成。这意味着您可以在 Maven 插件中使用它,而无需声明任何额外的依赖项。只需将后端设置为 epub3 即可!

EPUB3 转换器目前处于 Alpha 阶段。当一切稳定下来时,可能会有一些小问题!

有关此版本中已修复问题的更多信息,请参阅问题跟踪器中的1.5.0 里程碑

致谢

感谢所有贡献者为这个版本做出的贡献,以及所有参与使 Asciidoctor 成为出色的文档工具链和社区的人们!我们特别要感谢 Asciidoctor Gradle 插件的开发者,他们为我们提供了许多关于如何使 Maven 插件优秀的想法!

享受构建出色的文档吧!


Asciidoctor Gradle 插件 1.5.0 已发布!

作者 Andres Almiray -

花费的时间比我们预期的要长,但 Asciidoctor Gradle 插件 1.5.0 版本终于来了!Asciidoctor Gradle 插件基于 AsciidoctorJ,并且首次与其版本号方案保持一致。

这是入门的基本设置:

从这个版本开始,该插件跟踪 AsciidoctorJ 版本,因此从 0.7.3 跳到了 1.5.0。Asciidoctor 1.5.0 中包含许多精彩内容,如 发布说明中所述,但对 Gradle 用户来说,最有趣的可能是能够使用 Groovy 编写自定义扩展(或称为标签处理器)。您可以通过将包含扩展的 JAR 放在类路径上来包含扩展,或者直接在 Gradle 构建中编写它们,将代码放在 buildSrc 中。最新的选项有一个简单的示例,位于 github.com/aalmiray/asciidoctor-piglatin-example

此版本中的其他功能包括:

  • 使用 AsciidoctorTask 上的 requires 属性加载基于 Ruby 的扩展的能力。

  • 使用 AsciidoctorTask 上的 gemPath 属性设置 gem 安装路径的能力。

建议开发人员尽快升级。请注意插件 README 中提出的兼容性问题。不要忘记回顾 Asciidoctor 1.5.0 带来的更改,请参阅迁移指南

Hackergarten
图 1. Basel Hackergarten @ Canoo 7 月 24 日

继续创作出色的(以及 Groovy 的)文档吧!

升级到 1.5.0(推荐)很简单。只需在 Gradle 构建文件中更新版本即可。所有必要的依赖项都应通过 Gradle 拉取。

升级到 Asciidoctor 1.5.0 时,请参阅迁移指南,了解如何迁移内容。

有关此版本中已修复问题的更多信息,请参阅问题跟踪器中的1.5.0 里程碑


  • 7之2