2016-08-19 1 views
0

maven cxf-xjc-plugin을 사용하여 XSD 파일에서 Java 소스를 생성 (제공자 파일을 변경할 수 없음) 파일을 생성하려고합니다.cxf-xjc-plugin에서 .xsd 유효성 검사를 비활성화하려면 어떻게합니까?

Evertyhing은 정상적으로 작동했지만 새 .xsd 파일을 추가해야합니다. 이 파일은 다른 .xsd 파일을 포함하며 새로운 .xsd 파일은 기존 xsd 파일과 이름이 같은 엔티티를 정의하기 때문에 충돌이 발생합니다 (필자는 압니다 만이 .xsd 파일 사용자 임). 아! 그들은

오류가 전형적인 ... 같은 패키지에 있어야합니다 :

스키마가 같은 이름을 가진 두 개의 글로벌 구성 요소를 포함 할 수 없습니다

; 이 스키마는 두 번 발생합니다.

나는 누군가가 .xsd의 유효성을 검사하지 않기 위해 사용하고있는 유사한 문제를 해결할 수 있다고 읽었습니다.

이 파일을 .XSD 확인하고 바로 자바

로 변환 어떤을-플러그인 CXF-xjc를받는 말할 수 있다면 궁금 된 받는다는 구성은 다음과 같다 :

<plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-xjc-plugin</artifactId> 
      <version>3.0.5</version> 
      <configuration> 
       <extensions> 
        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension> 
       </extensions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 

         <forceRegenerate>false</forceRegenerate> 

         <sourceRoot>${project.basedir}/src/main/java</sourceRoot>       
         <xsdOptions> 
          <xsdOption> 
           <xsd>${basedir}/src/main/resources/webapi/xsd/SuperSchemaCommon.xsd</xsd>         
           <packagename>com.XX.XXXXX.package</packagename> 
           <extensionArgs> 
            <arg>-encoding</arg> 
            <arg>UTF-8</arg> 
           </extensionArgs> 
          </xsdOption> 
          <xsdOption> 
           <xsd>${basedir}/src/main/resources/webapi/xsd/SuperSchemaInput.xsd</xsd> 
           <bindingFile>${basedir}/src/main/xjb/pnr/SuperSchemaInput.xjb</bindingFile> 
           <packagename>com.XXXXXXX.input</packagename> 
           <extensionArgs> 
            <arg>-encoding</arg> 
            <arg>UTF-8</arg> 
           </extensionArgs> 
          </xsdOption> 

         </xsdOptions>  
        </configuration>       
        <goals> 
         <goal>xsdtojava</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

미리 감사드립니다!

답변

1

해결책을 찾았습니다!

xjc 매개 변수 "-nv"를 다른 확장 인수로 추가하기 만하면됩니다. 메이븐 태스크를 실행할 때 xjc의 인수로 전달됩니다.

<xsdOption> 
... 
    <extensionArgs> 
     <arg>-encoding</arg> 
     <arg>UTF-8</arg> 
     <arg>-nv</arg> 
    </extensionArgs> 
</xsdOption> 
관련 문제