Search code examples
javamavenswaggerswagger-maven-plugin

swagger maven plugin documentation is not generated


I am trying to generate swagger documentation using Swagger maven plugin

But nothing is created, this is plugin in details I entered:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.2.2-SNAPSHOT</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>/data/AMEE/ame/api.yaml</inputSpec>
                <language>java</language>
                <configOptions>
                   <sourceFolder>/data/AMEE/ame/gen</sourceFolder>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

It didn't create any documentation. Then I tried kongchen swagger maven plugin

Plugin:

<plugin>
    <groupId>com.github.kongchen</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>

        <skipSwaggerGeneration>false</skipSwaggerGeneration>
        <apiSources>
            <apiSource>
                <springmvc>false</springmvc>
                <locations>
                    <location>com.aepona.monatization.api.rest</location>
                    <location>com.aepona.monatization.inputprocessing.api.rest</location>
                    <location>com.aepona.monatization.reporting.api.rest</location>
                </locations>
                <schemes>
                    <scheme>http</scheme>
                    <scheme>https</scheme>
                </schemes>
                <host>localhost:8080</host>
                <basePath>/api</basePath>
                <descriptionFile>/data/zzzz/descriptionFile</descriptionFile>
                <info>
                    <title>Acccelerite Monatization Engine</title>
                    <version>1.0.0</version>
                    <description>DESCRIPTION</description>
                    <termsOfService>http://terms-of-services.url</termsOfService>
                    <license>
                        <url>http://url-to-license.com</url>
                        <name>LICENSE</name>
                    </license>
                </info>
                <outputPath>/data/zzzz/static</outputPath>
                <swaggerDirectory>/data/zzzz/swaggerFile</swaggerDirectory>
                <attachSwaggerArtifact>true</attachSwaggerArtifact>
            </apiSource>
        </apiSources>
    </configuration>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Dependency:

<dependency>
    <groupId>com.github.kongchen</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>3.0.0</version>
</dependency>

Still no documentation is generated. Where did I do wrong? Please help me. Thanks.


Solution

  • Maven Dependency::

    <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.4.0</version>
            </dependency>
    

    Annotate configuration class with and add below code in conf class.

    @Configuration
    @EnableWebMvc
    @EnableSwagger2
    
    
     @Bean
        public Docket api() { 
            return new Docket(DocumentationType.SWAGGER_2)  .apiInfo(apiInfo()).directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
                    .useDefaultResponseMessages(false)
              .select()           
              .apis(RequestHandlerSelectors.any())              
              .paths(PathSelectors.any())                        
              .build();      
    
        }
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("swagger-ui.html")
              .addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**")
              .addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
        @SuppressWarnings("deprecation")
        private ApiInfo apiInfo() {
            ApiInfo apiInfo = new ApiInfo(
              " REST API",
              "XXX Rest API for XXX authentication and Loan creation.",
              "Mer V1.1",
              "Terms of service",
              "ER",
              "License of API",
              "");
            return apiInfo;
        }
    

    Controller::

    @RestController
    @Api("/resource")
    public class Controller {
    }
    

    After that hit below url in browser: http://localhost:ip/ApplicationName/swagger-ui.html