Проблема с использованием плагина Annotate (Annox) с "cxf-codegen-plugin"
Я разрабатываю RESTFul сервисы в моем приложении. Мы используем ' cxf-codegen-plugin ' для генерации классов JAXB из схемы. Для данного требования мне нужно добавить аннотацию к сгенерированным классам JAXB, и я пытался использовать для этого плагин Annotate (Annox), но у меня возникли проблемы с его использованием. Я получаю org.xml.sax.SAXParseException: для использования настроек " http://annox.dev.java.net/ " требуется ключ "-Xannotate", чтобы включить этот плагин.
Вот как у меня есть настройки в моей кодовой базе: 1. WSDL относится к XSD, где у меня есть определения аннотаций. 2. pom.xml использует 'cxf-codegen-plugin' для генерации классов jabx. 3. Службе RESTFul требуется дополнительная аннотация к сгенерированным классам, поэтому я пытаюсь использовать Annox для выполнения работы.
Это фрагмент из XSD:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="gov.nih.nci.po.webservices.types"
xmlns:tns="gov.nih.nci.po.webservices.types" elementFormDefault="qualified"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
xmlns:annox="http://annox.dev.java.net"
xmlns:ja="http://annox.dev.java.net/org.codehaus.jackson.annotate"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
jaxb:extensionBindingPrefixes="xjc annox">
<complexType name="PersonRole" abstract="true">
<annotation>
<appinfo>
<annox:annotate>
<ja:JsonTypeInfo use="CLASS" include="PROPERTY" property="@class"/>
</annox:annotate>
</appinfo>
</annotation>
<complexContent>
<extension base="tns:Role">
<sequence>
<element name="personId" type="long" />
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
и вот как я хочу, чтобы мой сгенерированный класс выглядел так:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PersonRole", propOrder = { "personId" })
@XmlSeeAlso({ HealthCareProvider.class, OrganizationalContact.class,
ClinicalResearchStaff.class })
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public abstract class PersonRole extends Role {
И ниже находится запись из pom.xml:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/PersonService.wsdl</wsdl>
<extraargs>
<extraarg>-xjc-Xannotate</extraarg> </extraargs>
</wsdlOption>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
Также я заметил, что если я приведу неправильное значение / конфигурацию в xsd в разделе JsonTypeInfo, сборка завершится неудачно и будет жаловаться (например, отсутствует обязательное поле 'use' и т. Д.) - поэтому я предполагаю, что плагин Annox включен и пытается сделать что-то. но затем, когда я использую вышеупомянутые конфигурации, сборка завершается с ошибкой SAXParseException: использование настроек " http://annox.dev.java.net/ " требует включения ключа -Xannotate для включения этого плагина.
Кто-нибудь может предложить, пожалуйста, как это можно исправить?