Je suis en train d'écrire une tâche graduelle qui fait wsimport pour générer les artefacts de service Web. La tâche que j'ai écrite fonctionne parfaitement bien et est montrée ci-dessous.Pouvons-nous utiliser une tâche wsimport pour plusieurs wsdl dans gradle sans répéter le code similaire?
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")
}
}
}
}
Mais depuis que je dois générer des artefacts provenant de plusieurs wsdl de je voudrais passer quelque chose comme un tableau de chemins WSDL sur le paramètre wsdl. C'est le code source utilisé par ant.taskdef pour analyser le fichier wsdl. J'ai déjà essayé de passer le tableau de wsdl en pensant que arguments[0]
est un objet et puisque array est une instance de chaîne, ça pourrait marcher mais ce n'est pas le cas. Toute aide serait appréciée pour m'aider à éliminer la répétition du code. Aussi, je suis très nouveau à 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
]