2016-01-20 2 views
0

Мы перемещаем наш существующий проект из Ant + Eclipse в Maven + IntelliJ IDEA. В настоящее время я использую JAXB для создания классов из xsd файлов. Я хочу продолжить текущую структуру проекта, поэтому я хочу, чтобы jaxb2-maven-plugin генерировал классы в определенном месте. У меня есть несколько схем и вы хотите генерировать классы в разных местах. Я использую несколько привязок для выполнения плагинов, чтобы сделать это, как указано в the JAXB-2 Maven plugin site. Моя проблема в том, что выполняется только первое исполнение. Генерируются ни один из классов во втором исполнении. Вот мой файл pom.xml соответствующая часть:Java - Maven JAXB-2 плагин с несколькими схемами с различными конфигурациями не генерирует классы

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>schema1</id> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
        <configuration> 
         <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory> 
         <schemaFiles>myschema1.xsd</schemaFiles> 
         <packageName>xml</packageName> 
         <outputDirectory>${basedir}/src/main/java/com/example/dor/a</outputDirectory> 
         <arguments>-extension -Xcloneable -Xdefault-value -Xsetters -Xannotate</arguments> 
         <staleFile>${build.directory}/.jaxb-staleFlag-1</staleFile> 
         <clearOutputDir>false</clearOutputDir> 
        </configuration> 
       </execution> 
       <execution> 
        <id>schema2</id> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
        <configuration> 
         <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory> 
         <schemaFiles>myschema2.xsd</schemaFiles> 
         <packageName>xml</packageName> 
         <outputDirectory>${basedir}/src/main/java/com/example/dor/b</outputDirectory> 
         <arguments>-extension -Xcloneable -Xdefault-value -Xsetters -Xannotate</arguments> 
         <staleFile>${build.directory}/.jaxb-staleFlag-1</staleFile> 
         <clearOutputDir>false</clearOutputDir> 
        </configuration> 
       </execution> 
      </executions> 
</plugin> 
+0

Обновление версии вашего плагина, и реализовать фрагмент Maven, как это предусмотрено по собственной ссылке –

+0

Спасибо я не заметил. «Внедрив фрагмент maven, предоставленный вашей собственной ссылкой», вы имеете в виду «Пример 5», как я это делал раньше? – gamlieldor

+0

Из того, что я вижу, вам не нужны два исполнения, кроме случаев, когда вы хотите, чтобы выходной пакет из двух схем был неравномерным. Если это не требуется, вы можете просто добавить два источника в элемент source в том же самом исполнении. –

ответ

2

Я бы обновить до 1.6, и вы должны положить 2 схемы в разных пакетах, чтобы остановить конфликт в сгенерированном ObjectFactory. Ниже работает для меня.

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <version>1.6</version> 
       <executions> 
        <execution> 
         <id>schema1</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
         <configuration> 
          <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory> 
          <schemaFiles>myschema1.xsd</schemaFiles> 
          <packageName>xml.a</packageName> 
          <outputDirectory>${basedir}/src/main/generated1</outputDirectory> 
          <clearOutputDir>true</clearOutputDir> 
         </configuration> 
        </execution> 
        <execution> 
         <id>schema2</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
         <configuration> 
          <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory> 
          <schemaFiles>myschema2.xsd</schemaFiles> 
          <packageName>xml.b</packageName> 
          <outputDirectory>${basedir}/src/main/generated2</outputDirectory> 
          <clearOutputDir>true</clearOutputDir> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
+0

Спасибо вам за ваш совет. Я попытаюсь обновить свой плагин (это рабочий проект, поэтому не так просто), и я буду обновлять. – gamlieldor

+0

Это не работает. – Mejmo

Смежные вопросы