Как предопределить имя файла 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>