2

wsimport を実行して Web サービス アーティファクトを生成する gradle タスクを作成しています。私が書いたタスクは完全に正常に機能しており、以下に示しています。

task wsimport {
    ext.destDir = file('gen')
    doLast {
        ant {
            sourceSets.main.output.classesDir.mkdirs()
            destDir.mkdirs()
            taskdef(name: 'wsimport',
                    classname: 'com.sun.tools.ws.ant.WsImport',
                    classpath: 'C:/Users/sbhattar/git/java_commons/common/java/lib/jaxws-2.2.6/jaxws-tools.jar'
            )
            wsimport(keep: true,
                    destdir: sourceSets.main.output.classesDir,
                    sourcedestdir: destDir,
                    extension: "true",
                    verbose: "false",
                    quiet: "false",
                    xnocompile: "true",
                 wsdl:"http://spapen2w1.shashwat.com.PlanService_4_0.wsdl") {
                xjcarg(value: "-XautoNameResolution")
            }
        }
    }
}

しかし、複数の wsdl からアーティファクトを生成する必要があるため、wsdl パラメータに WSDL パスの配列のようなものを渡したいと考えています。これは、ant.taskdef が wsdl を解析するために使用するソース コードです。オブジェクトであるため、wsdlの配列を渡そうとしarguments[0]ましたが、配列は文字列のインスタンスであるため、機能する可能性がありますが、機能しませんでした。コードの繰り返しをなくすのに役立つ助けがあれば幸いです。また、私はgroovy/gradleに非常に慣れていません。

public void execute(AntBuilder ant, Object... arguments) {
    def wsdl = arguments[0]
    def extension = arguments[1]
    def destinationDir = arguments[2]
    def classpath = arguments[3]
    def episodes = arguments[4]

    log.info("parsing wsdl '{}' with destination directory of '{}'",
         wsdl, destinationDir)

    ant.taskdef (name : 'wsimport',
         classname: 'com.sun.tools.ws.ant.WsImport',
         classpath: classpath)

    def params = [
              wsdl            : wsdl.path,
              verbose         : extension.verbose,
              sourcedestdir   : destinationDir.path,
              keep            : extension.keep,
              wsdlLocation    : extension.wsdlLocation,
              xnocompile      : extension.xnocompile,
              fork            : extension.fork,
              xdebug          : extension.xdebug,
              target          : extension.target,
              xadditionalHeaders : extension.xadditionalHeaders
    ]
4

1 に答える 1