Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jibx Maven插件:如何在xsd中设置Java包->;定义命名空间时的Java转换_Java_Maven_Jibx - Fatal编程技术网

Jibx Maven插件:如何在xsd中设置Java包->;定义命名空间时的Java转换

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包 迄今提出的解决办法:

我使用带有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) 使用构建执行

建议如下

问题:

  • xsd->Java转换在每次构建时都会运行。我想手动运行它,或者只在更改xml模式时运行它
  • customization.xml中的preference inline属性与此设置不同,它内联对象引用的属性
2) 使用自定义xml设置Java包

建议如下:

问题:它不起作用

3) 模块模式

建议如下:

问题:太复杂了,无法为每个模式设置一个pom,为每个模式生成一个jar并在其他模式中导入jar

是否有人成功地解决了这些问题,并且能够在xml模式中定义名称空间时在xsd->Java转换中设置自定义Java包

提前感谢。

基于


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选项时,第二个选项将覆盖第一个选项。我们如何解决这个问题?