jaxb xsd前缀包名

时间:2012-01-12 20:11:55

标签: java xsd jaxb

我有一个大的xsd文件(带导入),只有当xjc编译器根据每个xsd文件中指定的目标属性选择包名时才能生成。如果我指定一个特定的包名称,那么它会尝试将所有生成的内容放在那个包中,并且我会收到大量的名称冲突。

问题在于包名称。我想在这些包名前加上前缀。 理想情况下,我希望com.othercompany.spec._2.Error成为com.mycompany.productx.data.spec.Error。 但我可以使用com.mycompany.productx.data.com.othercompany.spec._2.Error

后者只需要“com.mycompany.productx.data”。作为所有生成的包名称的前缀。

这有可能吗?

或者,我可以使用xjc生成的输出,并让Eclipse将java文件移动到另一个包中,但这是一个手动步骤,我想要一个自动构建过程来处理它,以便当其他人必须在6个月后重新生成它们,他们不必考虑这个。

1 个答案:

答案 0 :(得分:0)

要为每个XML模式获取不同的包名,您可以通过利用XJC中的剧集文件扩展名分别从XML模式生成类。

从a.xsd生成Java类到包com.example.a

xjc -d out -p com.example.a -episode a.episode a.xsd

从b.xsd(导入a.xsd)生成Java类到包com.example.b

xjc -d out -p com.example.b b.xsd -extension -b a.episode

了解更多信息