💥👉Project was archived because all changes on this for will be merged into orginal https://github.com/redlab/swagger-jaxb repository
It was created form be.redlab.jaxb:swagger-jaxb
,
since the original GitHub project seems abandoned, this fork is developed independently from its parents.
Original project: https://github.com/redlab/swagger-jaxb
The modification is based on the following fork: https://github.com/peneksglazami/swagger-jaxb
This project is a refactored version of the forks mentioned above, its purpose was to make the project more extendable, namely allowing to override the generated annotations and their targets.
JAXB XJC Plugin for automatically adding annotations from Swagger to generated classes from an XSD
Tests run in separate project, see here for the code https://github.com/redlab/swagger-jaxb-tck
-
REQUIRE Java 8 or higher!
-
build the plugin with maven
-
install it in your local repo
-
add the plugin to your classpath and use -swaggify on your jaxb command line or configure it i your pom or
-
add sonatype snapshot repository to your repo manager. ( post an issue if you really want dev version in Maven Central )
<build>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.2</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaIncludes>
<schemaInclude>**/*.xsd</schemaInclude>
</schemaIncludes>
<strict>true</strict>
<verbose>true</verbose>
<extension>true</extension>
<removeOldOutput>true</removeOldOutput>
<args>
<arguments>-swaggerify</arguments>
</args>
<plugins>
<plugin>
<groupId>be.redlab.jaxb</groupId>
<artifactId>swagger-jaxb</artifactId>
<version>1.5</version>
</plugin>
</plugins>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.12</version>
</dependency>
</dependencies>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.12</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3</version>
<dependencies>
<dependency>
<groupId>be.redlab.jaxb</groupId>
<artifactId>swagger-jaxb</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>javax.xml.parsers</groupId>
<artifactId>jaxp-api</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>com.sun.xml.parsers</groupId>
<artifactId>jaxp-ri</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>internal.generate</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<arguments>-swaggerify</arguments>
<clearOutputDir>true</clearOutputDir>
<packageName>be.redlab.jaxb.swagger.generated.model</packageName>
<sources>
<source>${project.basedir}/src/main/xsd/schema</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.12</version>
</dependency>
</dependencies>
Also you can use plugin with Gradle
configurations {
xjcConf
}
dependencies {
xjcConf 'com.sun.xml.bind:jaxb-xjc:2.2.6'
xjcConf 'com.sun.xml.bind:jaxb-impl:2.2.6'
xjcConf 'javax.xml.bind:jaxb-api:2.2.6'
xjcConf 'org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1'
xjcConf 'org.jvnet.jaxb2_commons:jaxb2-basics-runtime:1.11.1'
xjcConf 'org.jvnet.jaxb2_commons:jaxb2-basics-tools:1.11.1'
xjcConf 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:1.11.1'
xjcConf 'org.jvnet.jaxb2_commons:jaxb2-basics-annotate:1.0.3'
xjcConf('be.redlab.jaxb:swagger-jaxb:1.5') {
exclude group: 'com.sun.xml.bind'
exclude group: 'javax.xml.bind'
}
}
task generateClassesFromXsd {
doLast {
ant.taskdef(
name: 'antXjc',
classname: 'org.jvnet.jaxb2_commons.xjc.XJC2Task',
classpath: configurations.xjcConf.asPath
)
System.setProperty('javax.xml.accessExternalSchema', 'file')
ant.antXjc(
destdir: 'src/main/java',
binding: 'src/main/resources/xsd/binding.xjb',
extension: 'true') {
arg(value: '-swaggerify')
schema(dir: 'src/main/resources/xsd') {
include(name: '*.xsd')
}
}
}
}