Java Maven OpenApi(3.0)Codegen正在生成不需要的测试文件,如何删除该文件?

3htmauhk  于 2022-11-02  发布在  Maven
关注(0)|答案(1)|浏览(171)

我正在使用OpenApi(3.0)进行API定义,并使用 openapi-generator-maven-plugin * 为我生成文件(API对象+端点)。
然而,它在构建文件夹中生成了一个我不想要的测试文件。它被称为
*'OpenApiGeneratorApplicationTests'**。它总是阻止我在'target'(=build)文件夹中编译bc。我没有正确的Sping Boot 设置。
如何避免生成此测试文件?
这是我的maven配置:

<plugin>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator-maven-plugin</artifactId>
            <version>6.0.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <inputSpec>${project.basedir}/src/main/resources/ApiDef.yaml</inputSpec>
                        <generatorName>spring</generatorName>
                        <modelPackage>${clientPackage}.model</modelPackage>
                        <invokerPackage>${clientPackage}.invoker</invokerPackage>
                        <apiPackage>${clientPackage}.api</apiPackage>
                        <generateApis>true</generateApis>
                        <generateApiTests>false</generateApiTests>
                        <generateModelTests>false</generateModelTests>
                        <configOptions>
                            <delegatePattern>true</delegatePattern>
                        </configOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
6ioyuze2

6ioyuze21#

我今天也遇到了同样的问题。长话短说:
默认情况下,Spring的生成器maven插件将生成“invoker”--通过实现,它实际上是一个@SpringBootApplication启动器类。

@SpringBootApplication
@ComponentScan(basePackages = {"com.mypackage.invoker", "com.mypackage.api" , "org.openapitools.configuration"})
public class OpenApiGeneratorApplication {

    public static void main(String[] args) {
        SpringApplication.run(OpenApiGeneratorApplication.class, args);
    }

    @Bean
    public Module jsonNullableModule() {
        return new JsonNullableModule();
    }

}

并且还将生成相关联的测试类OpenApiGeneratorApplicationTests

@SpringBootTest
class OpenApiGeneratorApplicationTests {

    @Test
    void contextLoads() {
    }

}

这里的问题是src/test/com/mypackage/invoker/OpenApiGeneratorApplicationTests.java,实际上是test下的整个包被标记为源代码,而不是测试源代码,在我的例子中,这将导致编译时错误(因为没有找到测试范围内的依赖项)。
我设法通过配置maven插件来解决这个问题

<configOptions>
    <interfaceOnly>true</interfaceOnly>
    ...
</configOptions>

这将跳过SpringBootApplication和相关测试的生成。
我还向OpenApi Generator项目的github提交了一个ticket,用于标记

相关问题