以下是我的文件夹层次结构:
|-src
| |-main
| | |-java
| | | |-pt.thales.attracktive.communication
| | | | |-pojo
| | | | | |-...
| |
| |-resources
| | |-...
|
|-target
| |-generate-sources
| | |-xjc
| | | |-uk.org.siri.siri
| | | | |-...
我正在将.xsd文件生成为.java。通常,它们将定位到target / generate-sources / xjc / uk.org.siri.siri,但我能够将它们发送到src / main / java / pt.thales.communication / attracktive.communication / pojo。问题在于它们与软件包名称uk.org.siri.siri一起使用,从而产生了冲突。我希望在代码中更新程序包名称,但这取决于.xsd
中的内容。<xs:schema xmlns:tns="http://www.siri.org.uk/siri" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.siri.org.uk/siri" xmlns:xs="http://www.w3.org/2001/XMLSchema">
如何在pom.xml中进行更改?
答案 0 :(得分:0)
有一种方法可以在pom.xml
中配置目标软件包名称,但我不建议这样做。因为它为所有配置一个目标程序包-当您遵循“ 1:1名称空间:程序包”逻辑时,JAXB会更好地工作。
我建议使用绑定文件。
如果您使用的是maven-jaxb2-plugin,只需在bindings.xjb
中创建一个名为*.xjb
(或任何带有src/main/resources
的文件)。内容如下:
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
<jaxb:schemaBindings>
<jaxb:package name="com.acme.foo"/>
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
schemaLocation
必须指向您架构的架构文件之一。
jaxb:package/@name
定义目标软件包名称。
如果您有多个命名空间,请创建一个单独的jaxb:bindings
(每个命名空间分别使用jaxb:schemaBindings/jaxb:package
。将schemaLocation
指向使用特定命名空间的某些模式文件。
我不建议将多个名称空间映射到一个程序包上,这通常会导致问题。