从多模块maven jax rs项目生成swagger json-empty swagger.json

enxuqcxy  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(287)

我有一个父maven模块,由多个基于jax rs的子模块组成,如下所示:

<groupId>com.organization.project</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0</version>
....
<modules>
  <module>customers-api</module>
  <module>products-api</module>
  <module>users-api</module>
<modules>

将此作为示例性的pseudo pom.xml结构。每个子模块都是基于jax-rs的rest facade,由数百个资源组成。我想插入swagger,生成包含每个模块的公共raw swagger.json规范,作为单独的swagger api,例如:

/customers
/products
/users

我正试图通过swagger maven插件实现这一点:https://github.com/openapi-tools/swagger-maven-plugin
我尝试通过在customers api模块中添加一个包来测试它,如下所示:

<profile>
<id>generate-swagger-docs</id>
<modules>
  <module>customers-api</module>
  <module>products-api</module>
  <module>users-api</module>
</modules>
<build>
    <plugins>
        <plugin>
            <groupId>io.openapitools.swagger</groupId>
            <artifactId>swagger-maven-plugin</artifactId>
            <version>1.0.3</version>
            <dependencies>
                <dependency>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-jaxrs</artifactId>
                    <version>1.5.0</version>
                </dependency>
            </dependencies>
            <configuration>
                <resourcePackages>
                    <resourcePackage>com.organization.project.api.customers.controller</resourcePackage>
                </resourcePackages>
                <outputDirectory>${basedir}/target/</outputDirectory>
                <outputFilename>swagger</outputFilename>
                <outputFormats>JSON,YAML</outputFormats>
                <prettyPrint>true</prettyPrint>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

此包中的一个我的终结点:

@Path(Customers.PATH)
public interface Customers {
String PATH = "/customers";
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
void saveChanges(CustomerEntity customerEntity);

但是,生成的swagger.json是空的。这里可能会出什么问题?
还有,有没有一种方法(另一个插件或库)可以更容易地生成swagger定义,比如说,使用上下文根扫描,而不列出我的子模块中的所有包?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题