I want to switch my Maven2 build file to gradle. Generating the java classes from WSDL + XSDs with gradle seems to be not documented further there is no gradle plugin for this. I use the following configuration with maven and search the equivalent for gradle.
<!-- plugin for generating the classes from the WSDL+XSD -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.3</version>
<executions>
<execution>
<id>app1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>${project.build.directory}/wsdl/app1</schemaDirectory>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<generatePackage>org.app1.ws.generated</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/app1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v1/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v1</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v2-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v2/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v2</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v2</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
</executions>
</plugin>
i solved it...
configurations {
jaxb
}
dependencies {
jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1'
}
task jaxb () {
// output directory
jaxbTargetDir = file( "${buildDir}/generated-sources" )
jaxbTargetDirV19 = file( jaxbTargetDir.path + '/v19' )
jaxbTargetDirV110 = file( jaxbTargetDir.path + '/v110' )
jaxbTargetDirOtherWs = file( jaxbTargetDir.path + '/otherWs' )
// perform actions
doLast {
jaxbTargetDirV19.mkdirs()
jaxbTargetDirV110.mkdirs()
jaxbTargetDirOtherWs.mkdirs()
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath)
ant.jaxbTargetDirV19 = jaxbTargetDirV19
ant.jaxbTargetDirV110 = jaxbTargetDirV110
ant.jaxbTargetDirOtherWs = jaxbTargetDirOtherWs
// My-Webservice v1.10
ant.xjc(
destdir: '${jaxbTargetDirV110}',
package: 'mypackage.ws.generated.v110',
schema: 'src/main/resources/wsdl/v1.10/MyServiceSchema.xsd'
)
// My-Webservice v1.9
ant.xjc(
destdir: '${jaxbTargetDirV19}',
package: 'mypackage.ws.generated.v19',
schema: 'src/main/resources/wsdl/v1.9/MyServiceSchema.xsd'
)
// OtherWs-Webservice
ant.xjc(
destdir: '${jaxbTargetDirOtherWs}',
package: 'mypackage.otherws.generated',
schema: 'src/main/resources/wsdl/OtherWsServiceSchema.xsd'
)
}
}
compileJava.dependsOn jaxb
If you can't find a Gradle plugin for a particular need (and don't want to write your own plugin), look out for an Ant task. Here is one for JAXB: XJC Ant Task.
Any Ant task can be used as-is from Gradle (see Using Ant from Gradle). In the future, Gradle will also support the execution of Maven plugins.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With