gradle wsimport

jan*_*ana 3 wsimport gradle

我从命令行运行 wsimport 以从 WSDL 生成 java 类,如下所示。

wsimport -J-Djavax.xml.accessExternalDTD=all 
         -J-D-Djavax.xml.accessExternalSchema=all 
         -b http://www.w3.org/2001/XMLSchema.xsd 
         -b customization.xjb 
         -s genSrc https://example.com/XYZ.asmx?wsdl
Run Code Online (Sandbox Code Playgroud)

我想创建等效的 gradle 任务。由于公司限制,我不应该使用任何随机的自定义 gradle 插件。最好的方法是什么?

Mar*_*apo 7

正如 @lunicon 提到的,您应该使用 ant 任务,这里有一些改进,因为 gradle 更改了几个属性。

configurations {
    jaxws
}

dependencies {
    jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4'
}

task wsimport {
    ext.destDir = file("${projectDir}/src/main/generated")
    doLast {
        ant {
            sourceSets.main.output.classesDirs.inits()
            destDir.mkdirs()
            taskdef(name: 'wsimport',
                    classname: 'com.sun.tools.ws.ant.WsImport',
                    classpath: configurations.jaxws.asPath
            )
            wsimport(keep: true,
                    sourcedestdir: 'src/main/java',
                    package: "com.example.client.api",
                    wsdl: 'src/main/resources/api.wsdl') {
                xjcarg(value: "-XautoNameResolution")
            }
        }
    }
}

compileJava {
    dependsOn wsimport
    source wsimport.destDir
}
Run Code Online (Sandbox Code Playgroud)