使用gradle对asciidoc文档进行编译

2017/02/10

最近在学习使用Elasticsearch,当然先从文档入手,但是它的文档只能在线看,对于我这种经常处于无wifi状态的人来说,是必须需要一个离线文档的。所以下载了源码包,里面包含了文档,都是asciidoc的文件格式,自己编译生成一个吧。

asciidoc也是类似于Markdown的一种内容编写格式,自己google哈。

编译步骤

  1. 使用gradle插件进行编译
    因为整个Elasticsearch项目是用gradle来编译生成的,而且源码包的docs目录下也有build.gradle文件,就想到肯定是用gradle来进行编译,但是在源码根目录执行gradle assemble并不能编译asciidoc文件,没有任何文档生成。google后才知道需要专门的文本解析器asciidoctor,并且它提供了gralde的插件。

  2. 安装gradle asciidoctor插件
    在docs目录将build.gradle重命名进行备份,新建文件build.gradle,输入以下内容:

buildscript {
        repositories {
                jcenter()
        }

        dependencies {
                classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.0'
        }


}

apply plugin: 'org.asciidoctor.gradle.asciidoctor'

asciidoctor {
        logDocuments = true
        sourceDir = file('reference')
        outputDir = file('build/docs123')
}

sourceDir表示要编译的文档目录,它是一个相对目录,所以上面就表示要编译的文档在docs的reference目录下,asciidoctor会递归处理子目录。

如果docs目录下有多个子目录,你可能会想直接用.来表示当前目录,然后处理docs下的所有文档目录,但是使用这种方法,编译后会报以下错误:

Caused by: java.io.FileNotFoundException: /Users/hongtinglin/Java/elasticsearch-5.2.0-src/docs/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/build/docs123/.DS_Store (File name too long)
	at org.asciidoctor.gradle.AsciidoctorTask.processSourceDir(AsciidoctorTask.groovy:224)

暂时没有想到其它办法,就一个个目录编译过去吧。

(转载本站文章请注明作者和出处 湘江鸿的博客

Post Directory