Отключить Springfox с кодексом Swagger - PullRequest
0 голосов
/ 19 марта 2020

Я использую io.swagger.codegen.v3.swagger-codegen-maven-plugin, версия 3.0.18, для генерации кода из openapi 3 yaml. Но, когда он генерируется, он создает Springfox с конфигурацией Swagger 2.

Я хочу удалить Springfox, но я не знаю, как. Я думал написать некоторые свойства, такие как «springfox.enable = false», но ничего не могу найти по этому поводу.

Я не могу использовать профили Spring, потому что сгенерированный класс SwaggerDocumentationConfig создан в процессе компиляции.

Моя конфигурация плагина:

    <configuration>
        <inputSpec>${swagger-codegen.api.spec}</inputSpec>
        <language>spring</language>
        <library>spring-boot</library>
        <apiPackage>${swagger-codegen.server.api.package}</apiPackage>
        <modelPackage>${swagger-codegen.server.model.package}</modelPackage>
        <addCompileSourceRoot>true</addCompileSourceRoot>
        <additionalProperties>
            <java8>true</java8>
            <additionalProperty>jackson=true</additionalProperty>
        </additionalProperties>
        <generateApiTests>false</generateApiTests>
        <generateModelTests>false</generateModelTests>
        <configOptions>
            <dateLibrary>java8</dateLibrary>
            <sourceFolder>.</sourceFolder>
            <useBeanValidation>true</useBeanValidation>
            <performBeanValidation>true</performBeanValidation>
            <delegatePattern>true</delegatePattern>
        </configOptions>
    </configuration>

Класс, который я хочу отключить.

package io.swagger.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2020-03-19T11:38:32.945+01:00[Europe/Madrid]")
@Configuration
public class SwaggerDocumentationConfig {

    ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("Product API")
            .description("This is a sample server Product - Article server.")
            .license("")
            .licenseUrl("http://unlicense.org")
            .termsOfServiceUrl("")
            .version("1.0.0")
            .contact(new Contact("","", ""))
            .build();
    }

    @Bean
    public Docket customImplementation(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                    .apis(RequestHandlerSelectors.basePackage("com.mypackage.web.api"))
                    .build()
                .directModelSubstitute(java.time.LocalDate.class, java.sql.Date.class)
                .directModelSubstitute(java.time.OffsetDateTime.class, java.util.Date.class)
                .apiInfo(apiInfo());
    }

}

POM, который всегда генерирует код swagger-codegen при компиляции.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-spring</artifactId>
    <packaging>jar</packaging>
    <name>swagger-spring</name>
    <version>1.0.0</version>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <springfox-version>2.9.2</springfox-version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.22.RELEASE</version>
    </parent>
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <!--SpringFox dependencies -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${springfox-version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${springfox-version}</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>
    <!-- Bean Validation API support -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
...