用于jaxb-maven-plugin的IntelliJ bindingDirectory

Spa*_*ski 3 jaxb intellij-idea maven jaxb2-maven-plugin

我想在一个单独的schema.xjb绑定文件中为schema.xsd生成的类型添加globalBinding.我正在使用IntelliJ并且不确定这个问题是maven还是Intellij正在做(因为这个例子在eclipse中按预期运行).我得到的错误是:

org.xml.sax.SAXParseException; systemId: file:/D:/Projects/Location/To/Project/src/main/resources/xsd/schema.xsd; lineNumber: 7; columnNumber: 10; vendor extension bindings (jaxb:extensionBindingPrefixes) are not allowed in the strict mode. Use -extension.
Run Code Online (Sandbox Code Playgroud)

这是我的pom.xml中的build元素:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- The name of your generated source package -->
                <packageName>com.my.model.example</packageName>
                    <schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
                <!-- Well Intellij acts badly when it comes down to binding files, so there is that. -->
                <bindingDirectory>${project.basedir}/src/main/resources/xjb</bindingDirectory>
            </configuration>
        </plugin>

    </plugins>

</build>
Run Code Online (Sandbox Code Playgroud)

这是我的架构位于/ src/main/resources/xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           id="SampleSchema"
           targetNamespace="http://sample.com/namespace"
           elementFormDefault="qualified"
           xmlns="http://sample.com/namespace"
        >

    <xs:element name="Example">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string" maxOccurs="unbounded" />
                <xs:element name="street" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
Run Code Online (Sandbox Code Playgroud)

这是我的bindingFile位于/ src/main/resources/xjb中

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.0"
          xsi:schemaLocation="../xsd/schema.xsd">
    <jxb:globalBindings>
        <xjc:simple/>
    </jxb:globalBindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)

任何提示如何解决这个问题都会很棒!

Spa*_*ski 9

好吧,伙计们,我发现了什么似乎是问题所在.我在pom.xml中缺少<extension>元素中的<configuration>元素!像这样:

<configuration>

<packageName>com.my.model.example</packageName>
<schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
<bindingDirectory>${project.basedir}/src/main/resources/xjb</bindingDirectory>

<!-- tada! -->
<extension>true</extension>
</configuration>
Run Code Online (Sandbox Code Playgroud)