使用应用程序发布spring-restdocs html文档

时间:2018-03-29 14:03:53

标签: spring-mvc spring-boot documentation spring-restdocs

我有spring-restdocs的spring-boot应用程序,我想在该应用程序中为生成的文档创建端点。使用生成的html文档(asciidoctor)公开端点的最佳方法是什么?

我可以将index.html包含到jar文件中,但实际上并不知道如何创建将使用该html并在外部公开的端点。这个html是在test-stage之后和build-jar-stage之前生成的。

从官方文件: 您可以将您创建的HTML文档发布到静态网站,或将其打包并从应用程序本身提供。

e.g。我在'build / asctiidoctor / html5'文件夹中有index.html,并希望创建将返回index.html的控制器。

3 个答案:

答案 0 :(得分:1)

根据documentation,你可以配置你的构建系统(Maven,Gradle)将HTML作为静态内容打包到spring-boot jar中,以便它可以由Spring Boot自动提供服务'

对于Gradle 4.6和Spring Boot 2.0.0.RELEASE:

bootJar {
    dependsOn asciidoctor 
    from ("${asciidoctor.outputDir}/html5") { 
        into 'static/docs'
    }
}

然后可以通过'localhost:<your-port>/<your-context-path/docs/index.html

在本地验证

答案 1 :(得分:0)

从AsciiDoc生成html之后,只需将html文件复制到target/generated-docs中(请参阅https://spring.io/guides/gs/testing-restdocs/)。然后,Spring-Boot将在端点<...> / docs / index.html中获取并托管文档。

您可以使用maven-resources-plugin来完成这项工作。

答案 2 :(得分:0)

要使用Spring Boot使用url http:// localhost:8081 / docs / api-guide.html在本地访问api指南,请添加以下插件:

           <plugin>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctor-maven-plugin</artifactId>
            <version>${asciidoctor-maven-plugin.version}</version>
            <executions>
                <execution>
                    <id>generate-docs</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>process-asciidoc</goal>
                    </goals>
                    <configuration>
                        <backend>html</backend>
                        <doctype>book</doctype>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.restdocs</groupId>
                    <artifactId>spring-restdocs-asciidoctor</artifactId>
                    <version>${spring-restdocs.version}</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin.version}</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.outputDirectory}/static/docs
                        </outputDirectory>
                        <resources>
                            <resource>
                                <directory>
                                    ${project.build.directory}/generated-docs
                                </directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>`