2013-06-22 21 views
3

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

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. 

这里是我的pom.xml构建元素:

<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> 

这里是我的架构位于/ src目录/主/资源/ 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> 

这里是我的bindingFile位于/ src目录/主/资源/ 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> 

任何提示如何解决这将是伟大的!

回答

9

好吧,我发现什么似乎是问题。我错过了pom.xml中的<configuration>元素中的一个<extension>元素!像这样:

<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>