How to generate Swagger 2.0 json with maven plugin?

11,323 views
Skip to first unread message

Thomas

unread,
Dec 23, 2014, 4:00:26 AM12/23/14
to swagger-sw...@googlegroups.com
Hi

I have been trying to find examples and how to setup our project to generate the swagger json file. The best example I found
It seem that only swagger 1.2 json is generated by the plugin. Is it possible to use this plugin to get swagger 2.0 json?

Sample of the swagger json that it generates for me:

{
  "apiVersion" : "1.0.0-SNAPSHOT",
  "swaggerVersion" : "1.2",
...


I am not using spring in the project. So I assume that I cannot use any of the plugins named something with spring.

How can I configure to generate swagger 2.0 json while building with maven?
Or is it that the swagger-maven-plugin can only generate the old 1.2 version?
If so, is there an alternative way to automatically generate the swagger 2.0 json file?

The pom below:

<dependencies>

    <!-- swagger api doc -->
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.3.11</version>
</dependency>

</dependencies>

<profile>
<id>swagger_documentation</id>
<dependencies>
<!--
Swagger autodoc dependencies.
-->
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.11</artifactId>
<version>1.3.11</version>
</dependency>
</dependencies>

<build>
<plugins>
<!--
Swagger auto-documentation.
-->
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<apiSources>
<apiSource>
<!--Required parameters BEGIN-->
<locations>${project.groupId}</locations>
<apiVersion>${project.artifactId}</apiVersion>
<basePath>http://dokumentation.ourdomain.se${path.in.reactor}</basePath>
<!--Required parameters END-->
<!--Optional parameters BEGIN-->
<!---General parameters BEGIN-->
<apiInfo>
<title>Swagger Maven Plugin Sample</title>
<description>This is a sample for swagger-maven-plugin</description>
<termsOfServiceUrl>http://www.github.com/kongchen/swagger-maven-plugin
</termsOfServiceUrl>
<contact>bla...@abc123.se</contact>
<license>Source License</license>
<licenseUrl>http://www.ourdomain.se/licenses/license-2.0.txt</licenseUrl>
</apiInfo>
<!-- overridingModels>/swagger-overriding-models.json</overridingModels -->
<swaggerInternalFilter>com.wordnik.swagger.config.DefaultSpecFilter</swaggerInternalFilter>
<!---General parameters END-->
<!---Document generation parameters BEGIN-->
<outputTemplate>templates/strapdown.html.mustache</outputTemplate>
<mustacheFileRoot>${project.build.outputDirectory}/classes/templates/</mustacheFileRoot>
<outputPath>${project.build.outputDirectory}/generated/document.html</outputPath>
<!---Document generation parameters END-->
<!---Swagger JSON parameters BEGIN-->
<swaggerDirectory>generated/swagger-ui</swaggerDirectory>
<swaggerUIDocBasePath>http://www.wordnik.com/restapi/doc</swaggerUIDocBasePath>
<useOutputFlatStructure>false</useOutputFlatStructure>
<!---Swagger JSON parameters END-->
<!--Optional parameters END-->
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

Ron

unread,
Dec 23, 2014, 4:14:36 AM12/23/14
to swagger-sw...@googlegroups.com
Two separate issues here.

Swagger-core 1.3.X only generates Swagger 1.2 specs.
Swagger 2.0 support is introduced in swagger-core 1.5.X, which is currently under development. You can still use the SNAPSHOT version of it if you want to use Swagger 2.0 right away (and any feedback would help us improve that version).

As for the maven plugin, it looks like support for Swagger 2.0 is under development, not sure of its state. Check out https://github.com/kongchen/swagger-maven-plugin/tree/dev2.0.

--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Thomas

unread,
Dec 23, 2014, 5:40:12 AM12/23/14
to swagger-sw...@googlegroups.com
Hi

Thanks for the quick answer.

I got some problems. Any idea?

[ERROR] -----------------------------------------------------: org.aspectj.lang.Signature
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate (default) on project selectschool-restful-war: Execution default of goal com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate failed: A required class was missing while executing com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate: org/aspectj/lang/Signature
-----------------------------------------------------

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default of goal com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate failed: A required class was missing while executing com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate: org/aspectj/lang/Signature

...

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:166)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing while executing com.github.kongchen:swagger-maven-plugin:3.0-SNAPSHOT:generate: org/aspectj/lang/Signature

...

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:164)
... 20 more
Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2436)
at java.lang.Class.getDeclaredFields(Class.java:1806)
at com.fasterxml.jackson.databind.introspect.AnnotatedClass._findFields(AnnotatedClass.java:689)
at com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveFields(AnnotatedClass.java:470)
at com.fasterxml.jackson.databind.introspect.AnnotatedClass.fields(AnnotatedClass.java:282)
at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:384)
at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collect(POJOPropertiesCollector.java:237)
at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:142)
at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forSerialization(BasicClassIntrospector.java:68)
at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forSerialization(BasicClassIntrospector.java:11)
at com.fasterxml.jackson.databind.SerializationConfig.introspect(SerializationConfig.java:529)
at com.wordnik.swagger.jackson.ModelResolver.resolve(ModelResolver.java:148)
at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:112)
at com.wordnik.swagger.jackson.ModelResolver.resolve(ModelResolver.java:216)
at com.wordnik.swagger.converter.ModelConverters.readAll(ModelConverters.java:55)
at com.wordnik.swagger.jaxrs.Reader.parseMethod(Reader.java:215)
at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:118)
at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:43)
at com.github.kongchen.swagger.maven.MavenDocumentSource.loadDocuments(MavenDocumentSource.java:58)
at com.github.kongchen.swagger.maven.ApiDocumentMojo.execute(ApiDocumentMojo.java:63)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
... 20 more
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.Signature
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
... 42 more


I changed pom to:

<dependencies>

<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-core</artifactId>
<version>1.5.0-SNAPSHOT</version>
</dependency>
</dependencies>
 

<profile>
<id>swagger_documentation</id>
<dependencies>
<!--
Swagger autodoc dependencies.
        <dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.11</artifactId>
<version>1.3.11</version>
</dependency>
        -->

</dependencies>

<build>
<plugins>
<!--
Swagger auto-documentation.
-->
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
                <version>3.0-SNAPSHOT</version>

<configuration>
<apiSources>
<apiSource>
<!--Required parameters BEGIN-->
<locations>${project.groupId}</locations>
                            <schemes>http,https</schemes>
<host>http://localhost:8080</host>
<!--<apiVersion>${project.artifactId}</apiVersion>-->
                            <basePath>http://dokumentation.ourdomain.se${path.in.reactor}</basePath>
<!--Required parameters END-->
<!--Optional parameters BEGIN-->
<!---General parameters BEGIN-->
                            <info>

<title>Swagger Maven Plugin Sample</title>
                                <version>v1</version>

<description>This is a sample for swagger-maven-plugin</description>
<termsOfServiceUrl>http://www.github.com/kongchen/swagger-maven-plugin
</termsOfServiceUrl>
<contact>bla...@abc123.se</contact>
<license>Source License</license>
<licenseUrl>http://www.ourdomain.se/licenses/license-2.0.txt</licenseUrl>
                            </info>

Ron

unread,
Dec 23, 2014, 5:42:24 AM12/23/14
to swagger-sw...@googlegroups.com
Unfortunately, the maven plugin is a community contribution and I cannot provide support for it (not really familiar with it or its code base).
The best suggestion I can give you is to open an issue directly on the plugin's github repository.

--
Reply all
Reply to author
Forward
0 new messages