2012-09-27 144 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> 

我有什麼樣的簡單並定義了複雜的類型,它的作用就像一個魅力。 希望它有幫助!