gpt4 book ai didi

java - 我们可以在 gradle 中对多个 wsdl 使用一个 wsimport 任务,而不重复类似的代码吗?

转载 作者:行者123 更新时间:2023-11-30 02:48:37 24 4
gpt4 key购买 nike

我正在编写一个 gradle 任务,它执行 wsimport 来生成 Web 服务工件。我编写的任务运行得很好,如下所示。

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] 是一个对象,并且由于 array 是字符串的实例,因此它可能可以工作,但不能。任何帮助我消除代码重复的帮助将不胜感激。而且我对 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
]

最佳答案

消除重复的一种方法是创建一个列表,wsdlPaths,并对其进行迭代。一个简单的例子:

task wsimport {
doLast {
def wsdlPaths = ["path1", "path2", "path3"]

wsdlPaths.each { wsdlPath ->
ant {
// replace this with your current code as appropriate
echo(message: "path is ${wsdlPath}")
}
}
}
}

这里我们仅使用 ant.echo,但您应该能够替换当前的代码(适当进行轻微编辑)。

关于java - 我们可以在 gradle 中对多个 wsdl 使用一个 wsimport 任务,而不重复类似的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39377004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com