Как предопределить имя файла XSD с помощью jaxb2-maven-plugin

Я использую код ниже для генерации XSD из аннотированных java-классов. Имя по умолчанию XSD всегда "schema1.xsd". Как мне предварительно определить его, используя только этот плагин? На данный момент я использую maven-antrun-plugin для переименования файлов. Руководство по плагину не содержит соответствующей информации.

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>jaxb2-maven-plugin</artifactId>
  <version>2.3</version>
  <executions>
    <execution>
      <goals>
        <goal>schemagen</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <sources>
          <source>src/main/java/***some package***</source>
        </sources>
        <outputDirectory>${project.build.directory}/generated-sources/schemas</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

1 ответ

Решение

Ответ найден. Недостаточно только аннотировать ваши java-классы аннотациями JAXB. В пакете DTO должен существовать файл "package-info.java" со следующим содержимым:

@XmlSchema(namespace = "http://your-namespace")
package com.your.package;

import javax.xml.bind.annotation.XmlSchema;

И объявление плагина должно выглядеть так:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>jaxb2-maven-plugin</artifactId>
  <version>2.3</version>
  <executions>
    <execution>
      <goals>
        <goal>schemagen</goal>
      </goals>
      <phase>generate-sources</phase>
    </execution>
  </executions>
  <configuration>
    <sources>
      <source>src/main/java/com/your/package</source>
    </sources>
    <outputDirectory>${project.build.directory}/generated-sources/schemas</outputDirectory>
    <transformSchemas>
      <transformSchema>
        <uri>http://your-namespace</uri>
        <toFile>your-namespace.xsd</toFile>
      </transformSchema>
    </transformSchemas>
  </configuration>
</plugin>
Другие вопросы по тегам