maven-jaxb2-plugin не генерирует никаких выходных данных

Я новичок в Maven и пытаюсь использовать его для создания классов Java из моего XSD.

Мой файл xsd находится в src/main/resources/xsd

В зависимостях у меня есть это, но я не думаю, что мне это нужно, так как я использую Java 1.6

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.0</version>
    </dependency>

В разделе сборки у меня есть

    <build>
     <pluginManagement>
     ..
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
               <source>1.6</source>
               <target>1.6</target>
            </configuration>
        </plugin>
     ..
       <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <executions>
                <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <includeSchemas>
                                <includeSchema>**/test.xsd</includeSchema>
                            </includeSchemas>

                            <generatePackage>com.myproject.adapter.generated</generatePackage>
                            <bindingDirectory>src/main/binding</bindingDirectory>
                            <removeOldOutput>true</removeOldOutput>
                            <verbose>true</verbose>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Но когда я запускаю его, я ничего не получаю. Я запустил mvn compile и generate-sources с флагами -e и -X, чтобы посмотреть на результат, но кажется, что цель не вызывается. Любые идеи ?


person Scott The Scot    schedule 30.08.2011    source источник


Ответы (1)


во-первых, вы всегда должны указывать, какую версию зависимости или плагина вы используете

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>

то вы должны предоставить следующие записи внутри выполнения

<schemaDirectory>src/main/resources</schemaDirectory>
<schemaIncludes>
  <include>test.xsd</include>
</schemaIncludes>

Вот полное определение, я включил плагин jaxb2-basics, так как вы почти всегда хотите, что он делает.

<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<executions>
  <execution>
    <id>jaxb-test</id>
    <phase>generate-sources</phase>
    <goals>
      <goal>generate</goal>
    </goals>
    <configuration>
      <forceRegenerate>true</forceRegenerate>
      <schemaDirectory>src/main/resources</schemaDirectory>
      <schemaIncludes>
        <include>test.xsd</include>
      </schemaIncludes>
    </configuration>
  </execution>
</executions>
<configuration>
  <extension>true</extension>
  <args>
    <arg>-XtoString</arg>
    <arg>-Xequals</arg>
    <arg>-XhashCode</arg>
    <arg>-Xcopyable</arg>
    <arg>-Xmergeable</arg>
  </args>
  <plugins>
    <plugin>
      <groupId>org.jvnet.jaxb2_commons</groupId>
      <artifactId>jaxb2-basics</artifactId>
      <version>0.6.0</version>
    </plugin>
  </plugins>
</configuration>
</plugin>
person Community    schedule 30.08.2011
comment
Большое спасибо, это очень помогло, однако теперь он, похоже, игнорирует все, что я поместил в тег ‹schemaDirectory›. Теперь в журнале отображается [ОШИБКА] Не удалось выполнить цель org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.7.1:g enerate (default-cli) в проекте cciAdapter-core: Execution default-cli цели org .jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.7.1:сгенерировать не удалось: на основе I:\dev\адаптер\cciAdapter-core\src\main\resources не существует → [Справка 1], поэтому все еще используя значения по умолчанию. - person Scott The Scot; 31.08.2011
comment
@ Скотт, вы должны указать правильную версию плагина, 0.7.1 — старая версия, см. Мой пример для последней версии. также убедитесь, что ваш путь к каталогу правильный, он должен относиться к вашему файлу pom.xml. - person ; 31.08.2011
comment
Спасибо Джаррод. Я вернулся к 0.7.1, когда следил за другим сообщением в блоге. Сегодня я попробовал jixb и думаю, что он не нашел его, поскольку это многомодульный проект. Jixb имеет тег ‹multi-module›true‹/multi-module›, но я не нашел ничего подобного для jaxb. Я приблизился к успеху, когда перенес это в один из модулей. - person Scott The Scot; 31.08.2011