在 gradle 中使用 ant XJC 从 JAR 编译多个 XSD

ars*_*dru 1 jaxb xjc gradle

因此,我可以使用 ant xjc 从合同 jar 中的 ONE xsd 生成类。如何在不解压的情况下从这个 jar 的多个模式生成类

 ant.xjc(package: packageName, destdir: project.ext.generatedSrcDir,    
 extension: 'true',
 schema: "jar:file:///$pathToContractJar!/MySchema.xsd")
Run Code Online (Sandbox Code Playgroud)

lan*_*ava 6

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')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)