2016-11-01 3 views
0

Так что я могу генерировать классы из ОДНОГО xsd в контейнере контракта, используя ant xjc. Как я могу генерировать классы из нескольких схем из этого кувшина без распаковкиИспользование ant XJC в градиенте для компиляции нескольких XSD из JAR

ant.xjc(package: packageName, destdir: project.ext.generatedSrcDir,  
extension: 'true', 
schema: "jar:file:///$pathToContractJar!/MySchema.xsd") 
+0

У вас нет времени для полного ответа, только быстрый намека. Вы можете использовать файл каталога, чтобы переписать абсолютные URL-адреса схемы на другие URL-адреса. Таким образом, вы можете написать файл каталога, чтобы переписать URL-адреса ваших данных 'jar: fille: /// ..' ваших схем, а затем использовать XJC для компиляции абсолютных URL-адресов. Я использую этот трюк с Maven, но он также должен работать с Gradle. – lexicore

+0

Файл в каталоге? Как файл каталога Windows? Я не получил этого – arseniyandru

+0

Нет, как файл каталога XML. См. [This] (https://github.com/highsource/maven-jaxb2-plugin/wiki/Using-Catalogs) или [это] (http://blog.bdoughan.com/2011/10/jaxb-xjc- импортированная-схема-и-xml.html). – lexicore

ответ

0
configurations { 
    jaxb 
} 
dependencies { 
    jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.6' 
    jaxb 'com.sun.xml.bind:jaxb-impl:2.2.6' 
    jaxb 'javax.xml.bind:jaxb-api:2.2.6'  
} 
task xjc { 
    def xsds = zipTree(pathToContractJar).matching { 
     include: '*.xsd' 
    } 
    inputs.dir "src/main/resources/bindings" 
    inputs.files xsds 
    outputs.dir "$buildDir/xjc" 
    doLast { 
     System.setProperty('javax.xml.accessExternalSchema', 'all') 
     mkdir "$buildDir/xjc/result" 
     mkdir "$buildDir/xjc/xsd" 

     copy { 
      from xsds 
      into "$buildDir/xjc/xsd" 
     } 
     ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath) 
     ant.xjc(
      destdir: "$buildDir/xjc/result", 
      package: packageName, 
     ) { 
      schema(dir: "$buildDir/xjc/xsd", includes: '*.xsd') 
      binding(dir: "src/main/resources/bindings", includes: '*.xjb') 
      arg(value: '-verbose') 
     } 
    } 
}