2012-03-29 3 views
0

Maven으로 에피소드를 생성하려면 어떻게해야합니까? 여기 내 플러그인을 an operand is missing (org.apache.cxf:cxf-xjc-plugin:2.4.0:xsdtojava:generate-sources:generate-sources)Maven을 사용한 XJC 에피소드

: 이제 오류 메시지가

<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

고맙습니다. 이미이 문제가 해결되었지만 이제는 에피소드를 사용하는 중에 문제가 발생합니다. 그것에 대한 아이디어는 어디 있습니까? 편집을 참조하십시오. –

+0

에피소드가있는 항아리를 소비하기 위해서는 wsimport 또는 xjc에 전달해야하므로 추가 매개 변수가 필요하지 않습니다. 오류 스택에 'file :/D :/workspace'에 대한 참조가있는 이유를 혼란스럽게합니다. 파일의 어딘가에있는 스키마에 대한 참조가 있습니까? 표준 방법은 항아리 안에 스키마를 패키지하고 클래스 패스에서 참조하는 것입니다. – maximdim

+0

xsd가있는 라이브러리와 xsd 라이브러리의 요소를 사용하여 다른 xsd가있는 프로젝트가 있습니다. 이것들은 두 가지 다른 프로젝트입니다. 최종 제품 프로젝트는 병에서 xsd를 풀어 생산 시스템으로 최종 선적합니다. 최종 제품인 xsd는 라이브러리 xsd를 참조하므로 관련 참조가 있으며 스택 추적은 절대 경로를 인쇄합니다. 'xjc : javaType' 주석을 제거해도 문제는 해결되었지만 여전히 이상한 문제입니다. 내 마지막 제품인 pom에서 라이브러리에 대한 종속성을 전달합니다. 그렇지 않으면 에피소드가 고려되지 않고 lib 코드가 생성되기 때문에 –

관련 문제