2012-09-27 145 views
1

如果有其他项目依赖的Java库(通过Maven的.jar依赖)。在这个库中有一个XSD文件,它定义了一些xs:simpleType,它们也用xjc:javaType元素进行了注释,这些元素将简单类型映射到该库中已有的Java类和适配器类。这一切工作正常,但现在我想创建一个xs:complexType。我让org.jvnet.jaxb2.maven2:maven-jaxb2-plugin版本0.8.2从复杂类型和一个附加的.episode文件中创建了一些java bean。JAXB混合插曲和jar文件夹中的xjc:javaType

在我的第二个项目中,我导入库,将xsd文件解压缩到schema目录中,并让project2.xsd导入library.xsd,因为它使用简单和复杂的类型。为了避免已经存在的bean的双重生成,我在org.jvnet.jaxb2.maven2:maven-jaxb2-pluginepisodes标记中添加了库文件作为依赖。但是现在插件会抱怨它无法解析xsd文件,并在每种类型的定义行中引发异常。

我认为使用剧集有一些问题(他们不包括simpleTypes?)和xjc:javaType注释?有没有解决这个问题的方法?关于这个问题,我在网上找不到多少东西。感谢任何提示。

回答

1

我已经使用maven-hyperjaxb3-插件 检查达到同样的事情怎么做:

  <plugin> 
       <groupId>org.jvnet.hyperjaxb3</groupId> 
       <artifactId>maven-hyperjaxb3-plugin</artifactId> 
       <version>0.5.4</version> 
       <executions> 
       <execution> 
        <id>id1</id> 
        <inherited>false</inherited> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <args> 
          <param>-npa</param> 
         </args> 
         <generateDirectory>target/generated-sources/xjc2</generateDirectory> 
         <generatePackage>com.target.package</generatePackage> 
         <extension>true</extension> 
         <schemaIncludes> 
          <include>mine.xsd</include> 
         </schemaIncludes> 
         <forceRegenerate>false</forceRegenerate> 
         <removeOldOutput>true</removeOldOutput> 
         <verbose>true</verbose> 
        </configuration> 
       </execution> 
</executions> 
<dependencies> 
        <dependency> 
         <groupId>com.sun.xml.bind</groupId> 
         <artifactId>jaxb-impl</artifactId> 
         <version>2.1.12</version> 
        </dependency> 
       </dependencies> 
      </plugin> 

这里的项目依赖:

<dependencies> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>2.1.12</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.jvnet.hyperjaxb3</groupId> 
      <artifactId>hyperjaxb3-ejb-runtime</artifactId> 
      <version>0.3</version> 
     </dependency> 

     <!-- Roundtrip --> 
     <dependency> 
      <groupId>org.jvnet.hyperjaxb3</groupId> 
      <artifactId>hyperjaxb3-ejb-roundtrip 
      </artifactId> 
      <version>0.3</version> 
     </dependency> 
    </dependencies> 

我有什么样的简单并定义了复杂的类型,它的作用就像一个魅力。 希望它有帮助!