JAXB将具有相同名称空间的多个文件绑定到同一个包

我有这样的架构层次结构:

common |---legacy | |---legacy.xsd xmlns="http://common/legacy" | |---other.xsd xmlns="http://common/legacy" | '---....xsd xmlns="http://common/legacy" |---send |---file.xsd xmlns="http://common/send" '---text.xsd xmlns="http://common/send" '---....xsd xmlns="http://common/send" 

一个文件夹中的所有文件具有相同的命名空间

现在我想将命名空间映射到特定的java包(我无法更改命名空间)。

我找到了一个将模式绑定到包的解决方案。 但是我必须为每个xsd文件创建一个条目:

           ..... 

有没有办法直接定义命名空间和包名称之间的绑定?

另一种方法是在maven中定义包:

  org.jvnet.jaxb2.maven2 maven-jaxb2-plugin  com.company/legacy   

但是我必须为每个文件夹创建一个执行,这不是我想要的。

免责声明:我是maven-jaxb2-plugin

XJC从名称空间派生包,因此您(通常)不能为一个名称空间生成多个包。 使用jaxb:class/@ref有一些技巧,但你不想要那些,因为这可能导致各种冲突。

所以我的建议是定义多个执行,在同一个命名空间中每个不同的模式一个。 你可以使用generatePackage虽然我通常建议在绑定中定义包映射。

执行多次执行时,请确保每次执行都使用不同的generateDirectory

顺便说一句,为什么你不熟悉多个绑定?