Comment faire pour compiler plusieurs fichiers xsd dans Gradle JAXB/XJC?
Je suis assez nouveau à Gradle et je suis confronté à quelques problèmes en essayant de compiler plusieurs fichiers de schéma à l'aide de Gradle Ant XJC.
L'aide du code ci-dessous, je suis en mesure de compiler 1 schéma avec succès. Cependant, je ne suis pas sûr de la façon de faire de même pour plusieurs fichiers de schéma.
Des conseils s'il vous plaît?
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Task : XJC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
final def packageName = "org.test.webservice.domain"
final def schemaFile = "misc/resources/schemas/employee-v3/wadl/employee.xsd"
configurations { provided }
project.ext.generatedSrcDir = file("$buildDir/generated-src")
dependencies {
provided 'com.sun.xml.bind:jaxb-impl:2.2.6'
provided 'com.sun.xml.bind:jaxb-xjc:2.2.6'
}
task jaxb {
println 'Starting JAXB XJC...'
ext {
packagePath = packageName.replaceAll("\\.", "/")
srcFile = file(schemaFile)
destDir = new File(project.ext.generatedSrcDir, packagePath)
}
inputs.file srcFile
outputs.dir destDir
project.ext.generatedSrcDir.mkdirs()
ant.taskdef(name: 'xjc',
classname: 'com.sun.tools.xjc.XJCTask',
classpath: configurations.provided.asPath)
doLast {
project.ext.generatedSrcDir.mkdirs()
ant.xjc(schema: srcFile, package: packageName,
destdir: project.ext.generatedSrcDir)
}
task generateSources() {}
sourceSets.main.java.srcDirs += project.ext.generatedSrcDir
generateSources.dependsOn jaxb
compileJava.dependsOn generateSources
eclipseClasspath.dependsOn generateSources
// ideaClasspath.dependsOn generateSources
}
OriginalL'auteur MFIhsan | 2014-05-12
Vous devez vous connecter pour publier un commentaire.
J'ai résolu moi-même. Voici la solution de travail.
Execution failed for task ':jaxb'. > class com.sun.tools.xjc.XJC2Task doesn't support the nested "$" element.
. Des idées?Yup. J'obtiens le même.
OK, donc utiliser le second ci-dessus pour éviter le " $ " ... et au lieu coincé avec le java.lang.NoClassDefFoundError: com/sun/xml/bind/api/ErrorListener question. :-/ Ceci, combiné avec le manque de soutien pour le catalogue de fichiers de rendu est à la fois Gradle (et, par conséquent, Groovy) assez inutile pour nos fins. Je veux dire sheesh. Ce type d'outil de construction n'a pas encore mature et stable support de XML??
Pas besoin d'envelopper schemaDir avec ${}. Vous pouvez la supprimer ou de la simple donjon chemin comme une Chaîne de caractères
OriginalL'auteur MFIhsan
jacobono de gradle-jaxb-plugin compile tous les schémas dans le répertoire d'entrée.
Je trouve ce plugin plus stable que la Fourmi XJC. Dans mon projet, sur certaines machines Ant XJC ne pas générer des classes pour aucune raison, même si le résultat est réussi. Peut être est ce une question de configuration, mais à mon humble avis même de l'installation est plus facile avec le plugin.
OriginalL'auteur Bartek
Ici est un autre exemple de travail. J'ai mis la version complète de mon build.gradle fichier.
Vous pouvez répertoire d'installation et comprennent un filtre sur le schéma à l'intérieur de xjc.
si vous avez " imbriqués "$" élément n'est pas pris en charge " erreur comme ci-dessus, puis en dessous de mon exemple
OriginalL'auteur Steve Park
Cela pourrait être la solution la plus simple, sans aucun plugin externe.
Elle n'a aucune autre incidence?
OriginalL'auteur He-Man