4

我正在使用 swagger2 生成我的 api 文档,并且通过 springfox-staticdocs 使用来自 swaggwer 的相同 json 输出来生成 ascii 静态文档。ascii 格式的静态文档在 junit 测试类中生成。现在我想通过 asciidoctor-maven-plugin 从测试阶段生成的 ascii 文档生成 html 文档,但是不知何故 html 文档没有生成,我什至看不到 process-asciidoc 目标被执行。我将“process-asciidoc”目标绑定到准备包阶段,因为 ascii 文档是在测试阶段生成的。我在这里做错什么了吗。

mvn包

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building user-service 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ user-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 48 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ user-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ user-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Application\sts33\maxplayarea\UserService\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ user-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ user-service ---
[INFO] Surefire report directory: C:\Application\sts33\maxplayarea\UserService\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.dox.microservice.user.test.UserServiceControllerTest
19:43:58.515 [main] DEBUG o.s.t.c.j.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.dox.microservice.user.test.UserServiceControllerTest].
19:43:58.529 [main] DEBUG o.s.test.context.BootstrapUtils - Instantiating TestContextBootstrapper from class [org.springframework.test.context.web.WebTestContextBootstrapper]
19:43:58.548 [main] DEBUG o.s.t.c.w.WebTestContextBootstrapper - Found explicit ContextLoader class [org.springframework.boot.test.SpringApplicationContextLoader] for context configuration attributes [ContextConfigurationAttributes@fad74ee declaringClass = 'com.dox.microservice.user.test.UserServiceControllerTest', classes = '{class com.dox.microservice.user.configuration.UserConfiguration}', locations = '{}', inheritLocations = true, initializers = '{}', inheritInitializers = true, name = [null], contextLoaderClass = 'org.springframework.boot.test.SpringApplicationContextLoader']
19:43:58.552 [main] DEBUG o.s.t.c.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.555 [main] DEBUG o.s.t.c.w.WebTestContextBootstrapper - @TestExecutionListeners is not present for class [com.dox.microservice.user.test.UserServiceControllerTest]: using defaults.
19:43:58.565 [main] INFO  o.s.t.c.w.WebTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
19:43:58.585 [main] INFO  o.s.t.c.w.WebTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@27d415d9, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@5c18298f, org.springframework.test.context.support.DirtiesContextTestExecutionListener@31f924f5, org.springframework.test.context.transaction.TransactionalTestExecutionListener@5579bb86, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@5204062d]
19:43:58.587 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.587 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.588 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.588 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.591 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.591 [main] DEBUG o.s.t.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.dox.microservice.user.test.UserServiceControllerTest]
19:43:58.668 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
19:43:58.669 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
19:43:58.669 [main] DEBUG o.s.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
19:43:58.671 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [integrationTest] PropertySource with search precedence immediately lower than [systemEnvironment]
2016-02-19 19:43:58.963  INFO 17088 --- [           main] o.a.maven.surefire.booter.ForkedBooter   : Starting ForkedBooter v2.17 on max-WS03 with PID 17088 (C:\Users\max\.m2\repository\org\apache\maven\surefire\surefire-booter\2.17\surefire-booter-2.17.jar started by max in C:\Application\sts33\maxplayarea\UserService)
2016-02-19 19:43:58.987  INFO 17088 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@70325e14: startup date [Fri Feb 19 19:43:58 IST 2016]; root of context hierarchy
2016-02-19 19:43:59.150  INFO 17088 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2016-02-19 19:43:59.309  INFO 17088 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'encrypt.CONFIGURATION_PROPERTIES' of type [class org.springframework.cloud.bootstrap.encrypt.KeyProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-02-19 19:43:59.309  INFO 17088 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'encryptionBootstrapConfiguration' of type [class org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration$$EnhancerBySpringCGLIB$$af423f62] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2016-02-19 19:43:59.361  INFO 17088 --- [           main] o.a.maven.surefire.booter.ForkedBooter   : Started ForkedBooter in 0.62 seconds (JVM running for 1.307)

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.2.4.RELEASE)


Results :

Tests run: 5, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ user-service ---
[INFO] Building jar: C:\Application\sts33\maxplayarea\UserService\target\user-service-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ user-service ---
[INFO] Installing C:\Application\sts33\maxplayarea\UserService\target\user-service-0.0.1-SNAPSHOT.jar to C:\Users\max\.m2\repository\com\dox\microservice\user\user-service\0.0.1-SNAPSHOT\user-service-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Application\sts33\maxplayarea\UserService\pom.xml to C:\Users\max\.m2\repository\com\dox\microservice\user\user-service\0.0.1-SNAPSHOT\user-service-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.008s
[INFO] Finished at: Fri Feb 19 19:44:11 IST 2016
[INFO] Final Memory: 19M/336M
[INFO] ------------------------------------------------------------------------

pom.xml 片段:

   <project>
    ...   
     <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-staticdocs</artifactId>
            <version>2.2.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

        <build>
        <defaultGoal>process-resources</defaultGoal>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctor-maven-plugin</artifactId>
                    <version>1.5.2</version>
                    <configuration>
                        <sourceDirectory>src/docs/asciidoc</sourceDirectory>
                        <outputDirectory>target/docs/asciidoc</outputDirectory>
                        <backend>html</backend>
                        <doctype>book</doctype>
                    </configuration>
                    <executions>
                        <execution>
                            <id>output-html</id> 
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>process-asciidoc</goal>
                            </goals>
                            <configuration>
                                <backend>html5</backend>
                                <sourceHighlighter>coderay</sourceHighlighter>
                             </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            </pluginManagement>
        </build>
        <repositories>
            <repository>
                <id>spring-releases</id>
                <url>https://repo.spring.io/libs-release</url>
            </repository>
        </repositories>

    </project>

这是使用 springfox-staticdocs lib 生成 ascii 文档的测试方法片段:

@Test
public void convertSwaggerToAsciiDoc() throws Exception {
    this.mockMvc.perform(get("/v2/api-docs?group=user")
            .accept(MediaType.APPLICATION_JSON))
            .andDo(Swagger2MarkupResultHandler.outputDirectory("src/docs/asciidoc").build())
            .andExpect(status().isOk());
}
4

0 回答 0