Jibx Maven插件:如何在xsd中设置Java包->;定义命名空间时的Java转换
我使用带有Jibx的Spring对象Xml映射将一些xsd文件转换为Java源文件。Jibx由Jibx maven插件在构建过程中调用。我的模式文件(.xsd)有一个名称空间“a.b.com”,但我希望生成的Java源代码在包“a.com”下,因为其余的Java代码是这样组织的 我注意到Java包是根据xsd的名称空间自动确定的。因此,问题是:当在模式文件中定义名称空间时,使用Jibx Maven插件时,是否可以在xsd->java转换中设置输出java源文件的java包 迄今提出的解决办法: 1) 使用构建执行 建议如下 问题:Jibx Maven插件:如何在xsd中设置Java包->;定义命名空间时的Java转换,java,maven,jibx,Java,Maven,Jibx,我使用带有Jibx的Spring对象Xml映射将一些xsd文件转换为Java源文件。Jibx由Jibx maven插件在构建过程中调用。我的模式文件(.xsd)有一个名称空间“a.b.com”,但我希望生成的Java源代码在包“a.com”下,因为其余的Java代码是这样组织的 我注意到Java包是根据xsd的名称空间自动确定的。因此,问题是:当在模式文件中定义名称空间时,使用Jibx Maven插件时,是否可以在xsd->java转换中设置输出java源文件的java包 迄今提出的解决办法:
- xsd->Java转换在每次构建时都会运行。我想手动运行它,或者只在更改xml模式时运行它
- customization.xml中的preference inline属性与此设置不同,它内联对象引用的属性
org.jibx
jibxmaven插件
1.2.4.5
src/main/conf
myschema.xsd
我的包裹
模式代码生成
但是您应该小心使用packagename,而不是来自xsd名称空间的默认值,因为如果您有多个名称空间,则可能会在生成的源代码中发生冲突
您可以定义多个执行,使不同的模式具有不同的包名称
org.jibx
jibxmaven插件
1.2.4.5
图式a
模式代码生成
src/main/conf-a
myschema.xsd
我的包裹
图式b
模式代码生成
src/main/conf-b
xyz.xsd
我的包裹
如果可以更改xsd文件中的名称空间,则会使工作更轻松。我希望为每组架构提供不同的包,而不是为所有架构提供一个包。这可能吗?否则,我将在pom.xml中删除package标记,我需要更改模式文件中的xml名称空间,以反映输出Java源文件中我想要的Java包。我尝试在xsd中更改名称空间,但此名称空间在运行时加载的xmls中声明,我无法更改xmls,如果xsd名称空间与xml名称空间不匹配,Jibx在运行时会给我一个解组错误。在此之前,我放弃了这个选择。然后,我尝试了为每个模式集配置包的方法(这似乎是最正确的)。我已经在执行中拆分了jibx插件配置,但它不起作用。插件从不查找标记中定义的模式。你测试过这个解决方案吗?仅供参考,我正在手动运行mvn jibx:schema-codegen。更正我之前的评论,建议的jibx插件配置可以工作。但是,当我运行“mvn jibx:schema codegen”(没有转换XSD)时,它不会运行,每次运行“mvn package”时它都会运行。是否可以像以前一样改变此行为(codegen只运行了一次,我运行了“mvn jibx:schema codegen”)?此外,我在jibx定制xml中启用了一个Prefere inline属性。通过多次构建执行,输出Java源代码中的一个对象引用被更改为该对象的所有属性。若我禁用了preferinline属性,它会工作,但随后我会丢失内部类。考虑到这个问题和我上次评论中提到的另一个问题,这个解决方案不能满足我的需要。有什么帮助吗?@khmarbaise..当我的xsd文件中有导入时,这是如何工作的?例如,我的当前架构中有一个ComplexType XYZ,而导入的架构中存在另一个同名XYZ的ComplexType。现在,当设置package选项时,第二个选项将覆盖第一个选项。我们如何解决这个问题?