我正在使用 XJC 从 HTNG 支付系统模式生成 Java 类,该模式位于此 zip的 /schemas 目录中。
如果我在不传递参数的情况下运行 XJC -p
,则生成工作正常,并且在org.htng._2009b
包下生成类:
$ cd schemas
$ xjc -mark-generated -no-header -target 2.1 -npa .
我要做的就是将生成的类的包名称更改为更适合项目的名称,例如com.justin.htng
:
$ cd schemas
$ xjc -mark-generated -no-header -target 2.1 -npa -p com.justin.htng .
但是,这样做会极大地破坏 JAXB 生成,几乎在每个元素上都会引发碰撞错误。我可以通过第一种方法生成类,然后将它们重构到com.justin.htng
包中来解决这个问题,但这不是很容易维护,并且不能很好地移植到 maven-jaxb2-plugin。
有人可以解释为什么会发生这种情况,以及是否有办法使用 XJC 解决它? 我觉得如果 JAXB 通过第一种方法工作,它应该通过第二种方法工作,因为需要做的只是对包名称进行简单的字符串替换。我想我可以使用第二种方法并通过 .xjb 绑定文件处理所有冲突,但考虑到错误的数量,这将是乏味的。