我如何使XJC ant任务使用多个绑定文件?

时间:2014-03-12 08:58:51

标签: java ant jaxb gradle xjc

我正在尝试使用XJC ant任务在gradle脚本中生成一些类。如果我只使用一个绑定文件(对于类renaming0,但我很快就会尝试使用更多(一个剧集文件)),我生成它们没有问题,它们被任务明显忽略了。

更清楚,这个

ant.xjc(schema : 'test.xsd',
        destdir:'destdir',
        extension: true,
        package: 'testpackage') {
    classpath { 
        fileset(dir: project.property('jaxb.home'), includes: 'jaxb-impl.jar') // <== here I include the 
    }
    binding(dir: project.projectDir) {
        filename(name:'bindings.xml') //<== this bindings is for classes renaming
        //filename(name:'previous.episode') //<== this bindings is for classes reusage
    }
    arg(value:"-npa")
    arg(value:"-nv")
}

运行良好,类重命名就好了,但是一旦我尝试包含previous.episode文件,就会忽略这两个绑定文件:不再重命名,当然也没有重用

让我发疯的是,用cmd行xjc -nv -classpath "<haxb.home>jaxb-impl.jar" -d destdir -p testpackage -b bindings.xml -b previous.episode -extension -npa调用XJC就像魅力一样。

另外,如果我合并bindings.xml和previous.episode,它也可以工作,但至少可以说它不太实用。

所以如果有人能在这一点上帮助我,那就太好了。

1 个答案:

答案 0 :(得分:0)

gradle-jaxb-plugin允许使用多个绑定文件:

jaxb 
{
  xsdDir = "schemas"
  bindingsDir = "bindings"
  bindings = ["SampleBinding.xjb", "AnotherOne.xjb"]
  xjc 
  {
    taskClassname = "com.sun.tools.xjc.XJC2Task"
    generatePackage = "com.my.application.schema"
  }
}

另一方面,它需要指定XSD文件夹而不是特定文件,并解析该文件夹内的所有模式。但是,很容易绕过这个问题,到目前为止,这是我所拥有的插件唯一的一个问题。