2012-03-29 47 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