通過swagger2markup+asciidoctorj生成html和pdf文檔(maven方式及java代碼方式)
任務:通過同事的json文件生成相應的html和pdf文檔
前言
開始時swagger2markup和asciidoctorj是什么都不知道,只能百度,看官方文檔(翻譯。。。),
遇到問題就一頭霧水,完全不知道哪里出了問題,要怎么決解,百度上資料(中文?)也是寥寥無幾,maven
也是沒有系統學習過,導致很多小問題到了自己這里變成了大麻煩。在經歷了一個星期的摸索,終於小有所成,
在此寫下自己嘔心瀝血的過程,以免日后自己忘了,也給其他同僚多一份可以參考的資料。
如果有寫的不好的地方,還望指出。
以下是我經歷一個星期的各種碰撞過程
- 使用maven插件方法生成html和pdf文件(json文件生成adoc文件,adoc文件再生成html和pdf文件)
- 使用java代碼方式生成adoc文件
- 使用java代碼方式調用cmd執行mvn test命令生成html和pdf文件
出現問題:生成的pdf中文顯示不全
解決:
- 使用asciidoctorj工具(單獨)在cmd里生成pdf文件
- 使用java代碼方式直接生成pdf文件(需adoc文件)
目錄
生成html和pdf文檔
1、使用maven插件方法生成html和pdf文件 (json文件生成adoc文件, adoc文件再生成html和pdf文件)
- 導入eclipse后發現只有幾個可用
- 可以看到pom.xml文件內有如下配置文件
<!-- 一些參數 --> <properties> <java.version>1.8</java.version> <swagger2markup.version>1.2.0</swagger2markup.version> <asciidoctor.input.directory>${project.basedir}/src/docs/asciidoc</asciidoctor.input.directory> <swagger.output.dir>${project.build.directory}/swagger</swagger.output.dir> <swagger.snippetOutput.dir>${project.build.directory}/asciidoc/snippets</swagger.snippetOutput.dir> <generated.asciidoc.directory>${project.build.directory}/asciidoc/generated</generated.asciidoc.directory> <asciidoctor.html.output.directory>${project.build.directory}/asciidoc/html</asciidoctor.html.output.directory> <asciidoctor.pdf.output.directory>${project.build.directory}/asciidoc/pdf</asciidoctor.pdf.output.directory> <swagger.input>${swagger.output.dir}/swagger.json</swagger.input> </properties> <!-- 首先是兩個遠程倉庫 --> <pluginRepositories> <pluginRepository> <id>jcenter-snapshots</id> <name>jcenter</name> <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url> </pluginRepository> <pluginRepository> <id>jcenter-releases</id> <name>jcenter</name> <url>http://jcenter.bintray.com</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <repositories> <repository> <id>jcentral</id> <name>bintray</name> <url>http://jcenter.bintray.com</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>jcenter-snapshots</id> <name>jcenter</name> <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url> </repository> </repositories> <!-- 以下用於生成adoc文件的配置 --> <plugin> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-maven-plugin</artifactId> <version>${swagger2markup.version}</version> <dependencies> <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-import-files-ext</artifactId> <version>${swagger2markup.version}</version> </dependency> <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-spring-restdocs-ext</artifactId> <version>${swagger2markup.version}</version> </dependency> </dependencies> <configuration> <swaggerInput>${swagger.input}</swaggerInput> <outputDir>${generated.asciidoc.directory}</outputDir> <config> <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage> <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy> <swagger2markup.extensions.dynamicOverview.contentPath>${project.basedir}/src/docs/asciidoc/extensions/overview</swagger2markup.extensions.dynamicOverview.contentPath> <swagger2markup.extensions.dynamicDefinitions.contentPath>${project.basedir}/src/docs/asciidoc/extensions/definitions</swagger2markup.extensions.dynamicDefinitions.contentPath> <swagger2markup.extensions.dynamicPaths.contentPath>${project.basedir}/src/docs/asciidoc/extensions/paths</swagger2markup.extensions.dynamicPaths.contentPath> <swagger2markup.extensions.dynamicSecurity.contentPath>${project.basedir}src/docs/asciidoc/extensions/security/</swagger2markup.extensions.dynamicSecurity.contentPath> <swagger2markup.extensions.springRestDocs.snippetBaseUri>${swagger.snippetOutput.dir}</swagger2markup.extensions.springRestDocs.snippetBaseUri> <swagger2markup.extensions.springRestDocs.defaultSnippets>true</swagger2markup.extensions.springRestDocs.defaultSnippets> </config> </configuration> <executions> <execution> <phase>test</phase> <goals> <goal>convertSwagger2markup</goal> </goals> </execution>