我正在使用JAXB-2 Maven插件从一些xsd文件开始生成java类。我的配置如下。我有三个没有目标命名空间A的模式文件,包含在C中的B,然后我有另外两个模式D和E以及提供的命名空间,它们都包括C. 是否可以使用绑定或不同的执行(使用剧集)让每个模式在不同的包中生成类?类似的东西:
A schema (no namespace) -> com.packageA
B schema (no namespace) -> com.packageB
C schema (no namespace) -> com.packageC
D schema (namespace X) -> com.packageD
E schema (namespace X) -> com.packageE
当然没有课程重复?或者我能拥有的最好的是拥有两个包,一个用于属于具有空命名空间的XSD文件的类,一个用于具有命名空间X的两个XSD文件?你能提供一个pom.xml文件的例子来实现吗? 谢谢 怎么可以
答案 0 :(得分:1)
免责声明:我是maven-jaxb2-plugin
的作者,所以这个答案是关于该插件的。
这称为“单独的模式编译”。这可以使用剧集来实现,请参阅maven-jaxb2-plugin
文档中的explanation。
简而言之:
maven-jaxb2-plugin
默认情况下会将依赖项用作剧集。这是一个project,它以这种方式编译大量模式。结果是大约100多个工件,其依赖关系非常类似于模式的依赖关系。
我看到的一个问题是你有模式A,B和C具有相同(空)命名空间,映射到不同的包。这可能不适用于JAXB(另请参阅“变色龙名称空间”)。