2012-03-29 48 views
0

我怎樣才能用maven生成一集?我現在得到一個錯誤信息:an operand is missing (org.apache.cxf:cxf-xjc-plugin:2.4.0:xsdtojava:generate-sources:generate-sources)XJC情節與maven

這裏我的插件:

<plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-xjc-plugin</artifactId> 
      <version>2.4.0</version> 
      <configuration> 
       <extensions> 
        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.4.0</extension> 
       </extensions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xsdtojava</goal> 
        </goals> 
        <configuration> 
         <xsdOptions> 
          <xsdOption> 
           <extension>true</extension> 
           <xsd>my.xsd</xsd> 
           <packagename>mypackage</packagename> 
           <extensionArgs> 
            <arg>-episode</arg> 
           </extensionArgs> 
          </xsdOption> 
         </xsdOptions> 
        </configuration> 

       </execution> 
       <execution> 
       <configuration> 
         <xsdOptions> 
       <xsdOption> 
         <extension>true</extension> 
          <xsd>my.xsd</xsd> 
         <extensionArgs> 
          <arg>-Xdv</arg> 
         </extensionArgs> 
        </xsdOption> 
         </xsdOptions> 
        </configuration> 

       </execution> 


      </executions> 

編輯:情節的創作工作正常。在另一個項目中,包含該集的jar文件通過episodes屬性給出。但我收到一個例外情況:Error while parsing schema(s).Location [ file:/D:/workspace/XXX/src/test/resources/XXX.xsd{45,32}]. om.sun.istack.SAXParseException2: compiler was unable to honor this conversion customization. It is attached to a wrong place, or its inconsistent with other bindings. nested in com.sun.istack.SAXParseException2: (the above customization is attached to the following location in the schema)

這是帶有情節信息的xsd,它將包含在最終產品中。它在該行上的一些xjc:javaType適配器引用。會導致問題嗎?

回答

1

與您使用的插件不同,但下面的插件用於幾年前爲我工作。您可能想要查看是否有更新版本的插件可用等。還可以調整以使用您的模式並在不需要的情況下刪除綁定定製。

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.7.0</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <schemaDirectory>${basedir}/src/main/xsd</schemaDirectory> 
     <schemaIncludes> 
     <schemaInclude>Core.xsd</schemaInclude> 
     </schemaIncludes> 
     <bindingDirectory>${basedir}/src/main/xjb</bindingDirectory> 
     <bindingIncludes> 
     <bindingInclude>JaxbBindings.xjb</bindingInclude> 
     </bindingIncludes> 
     <generateDirectory>${project.build.directory}/generated-sources/jaxb</generateDirectory> 
     <episode>true</episode> 
     <episodeFile>${project.build.directory}/generated-sources/jaxb/META-INF/sun-jaxb.episode</episodeFile> 
     <verbose>true</verbose> 
    </configuration> 
    <dependencies> 
     <dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
     <version>2.1.10</version> 
     </dependency> 
     <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb-xjc</artifactId> 
     <version>2.1.10</version> 
     </dependency> 
    </dependencies> 
    </plugin> 
+0

感謝這已經工作,但現在我在使用該劇集時遇到問題。 Mybe對此有何看法?請參閱編輯。 – 2012-03-29 17:09:51

+0

據我記得,爲了消費jar與情節,你只需要將它傳遞給wsimport或xjc,應該沒有額外的params需要。我很困惑你爲什麼在錯誤堆棧中引用'file:/ D:/ workspace'。你有文件中某處的模式引用嗎?標準的方式是在你的jar包內部架構並從類路徑中引用它 – maximdim 2012-03-29 17:43:35

+0

我已經有了一個帶有xsd的庫和一個使用庫xsd中的元素的另一個xsd的項目。這是兩個不同的項目。最終產品項目將jar包中的xsd解包,以便最終發貨到生產系統。最終產品xsd引用庫xsd,這就是爲什麼有一個相對引用,堆棧跟蹤只是打印絕對路徑。去除'xjc:javaType'註解解決了這個問題,但這仍然是一個奇怪的問題。在我的最終產品pom中,我傳遞了庫的依賴關係,因爲否則情節不會被考慮,並且創建lib代碼 – 2012-03-29 22:29:38