2016-08-19 2 views
0

Я пытаюсь сгенерировать источники Java из файлов XSD из файла поставщика (я не могу изменить эти файлы) с помощью maven cxf-xjc-plugin.Как отключить проверку .xsd в cxf-xjc-plugin?

Evertyhing работал нормально, но мне нужно добавить новый .xsd-файл. Этот файл содержит другие .xsd-файлы внутри, а theres - конфликт, потому что новые .xsd-файлы определяют объекты с тем же именем, что и существующие xsd-файлы (я знаю, я знаю, но я просто пользователь этих файлов .xsd). Ах! они должны быть в одном пакете ...

ошибка является типичным:

Схема не может содержать две глобальные компоненты с тем же именем; эта схема содержит два вхождения ...

Я читал, что кто-то смог исправить подобные проблемы, рассказывая инструменту, который он использовал, чтобы НЕ проверять .xsd.

мне было интересно, если это возможно, чтобы сказать о CxF-XJC-плагин не для проверки XSD-файлов и просто преобразовать в Java

Конфигурация Maven выглядит следующим образом:

<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" в качестве другого расширения arg. Он передается аргументам xjc при выполнении задания maven

<xsdOption> 
... 
    <extensionArgs> 
     <arg>-encoding</arg> 
     <arg>UTF-8</arg> 
     <arg>-nv</arg> 
    </extensionArgs> 
</xsdOption> 
Смежные вопросы