为多个WSDL文件生成客户端,并通过Spring Gradle将其放在不同的包中

时间:2015-06-09 16:05:42

标签: spring web-services soap wsdl

我想使用spring gradle从WSDL文件生成java类。我已经完成了1个wsdl文件。但是将来可能会有大约200个WSDL。是否有一种单独生成WSDL的方法,并将java类放在不同的包中。说每个用WSDL文件名命名的包?请在下面找到我的build.gradle。是否可以通过传递WSDL名称,包名称来使Ant任务通用并单独为每个WSDL文件调用?

// tag::wsdl[]
task genJaxb {
    ext.sourcesDir = "${buildDir}/generated-sources/jaxb"
    ext.classesDir = "${buildDir}/classes/jaxb"
    //ext.schema = "http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl"
    ext.schema = "${projectDir}/src/main/resources/wsdl.test1"

    outputs.dir classesDir

    doLast() {
        project.ant {
            taskdef name: "xjc", classname: "com.sun.tools.xjc.XJCTask",
                    classpath: configurations.jaxb.asPath
            mkdir(dir: sourcesDir)
            mkdir(dir: classesDir)

            xjc(destdir: sourcesDir, 
                    schema: schema,
                    package: "wsdl.test1") {                
                arg(value: "-wsdl")
                produces(dir: sourcesDir, includes: "**/*.java")
            }

            javac(destdir: classesDir, source: 1.6, target: 1.6, debug: true,
                    debugLevel: "lines,vars,source",
                    classpath: configurations.jaxb.asPath) {
                src(path: sourcesDir)
                include(name: "**/*.java")
                include(name: "*.java")
            }

            copy(todir: classesDir) {
                fileset(dir: sourcesDir, erroronmissingdir: false) {
                    exclude(name: "**/*.java")
                }
            }
        }
    }
}
// end::wsdl[]

1 个答案:

答案 0 :(得分:1)

我使用wsdl2java gradle plugin从多个wsdl / xsd文件生成Java类。像魅力一样。