Как я могу изменить префикс пространства имен с JAXB2?
В моем POM я использую плагин JAXB2 для генерации классов из WSDL:
<build>
<finalName>myApp</finalName>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>${maven-jaxb2-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<strict>false</strict>
<extension>true</extension>
<schemaLanguage>WSDL</schemaLanguage>
<schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
<outputDirectory>${project.basedir}/src/main/java</outputDirectory>
<cleanPackageDirectories>false</cleanPackageDirectories>
<schemaIncludes>
<include>*.wsdl</include>
</schemaIncludes>
<!--
<bindingDirectory>${project.basedir}/src/main/resources/wsdl</bindingDirectory>
<bindingIncludes>
<include>bindings.xjb</include>
</bindingIncludes>
-->
<!-- <args> <arg>-Xannotate</arg> </args> -->
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>1.0.2</version>
</plugin>
</plugins>
</configuration>
</plugin>
</plugins>
</build>
Поскольку я намереваюсь изменить префикс пространства имен по умолчанию, используемый JAXB2, я просмотрел в интернете Stackru, чтобы найти что-то, что могло бы мне помочь. Я нашел сообщение для использования файла bindings.xjb... и попытался адаптировать его к своей среде:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb
http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
http://jaxb2-commons.dev.java.net/namespace-prefix">
<jaxb:globalBindings typesafeEnumMaxMembers="2048" />
<jaxb:bindings schemaLocation="./myWsdl.wsdl">
<jaxb:schemaBindings>
<jaxb:package name="com.foo.bar" />
</jaxb:schemaBindings>
<jaxb:bindings>
<namespace:prefix name="v2" />
<!-- Additional @XmlNs prefix declarations to take effect for this schema/package -->
<namespace:prefix name="xsi" namespaceURI="http://www.w3.org/2001/XMLSchema-instance" />
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
But when running a full build I always get this exception:
[ERROR] Error while parsing schema(s).Location [ file:/E:/projects/XXX/git/myApp/src/main/resources/wsdl/bindings.xjb{16,30}].
com.sun.istack.SAXParseException2; systemId: file:/E:/projects/XXX/git/myApp/src/main/resources/wsdl/bindings.xjb; lineNumber: 16; columnNumber: 30; Die "jaxb:schemaBindings"-Anpassung ist mit keinem Schemaelement verknüpft.
at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:624)
at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:618)
at com.sun.tools.xjc.reader.internalizer.Internalizer.move(Internalizer.java:443)
at com.sun.tools.xjc.reader.internalizer.Internalizer.move(Internalizer.java:420)
...
-> The "jaxb:schemaBindings" customization is not associated with any schema element.
Что я делаю неправильно?