Добавление аннотаций к информации о пакете, сгенерированной JAXB

Я использовал annox для добавления аннотаций к моим классам, сгенерированным jaxb (через файлы связываний), но я не могу найти способ добавить аннотации непосредственно в пакет (package-info.java).

Я пытался сделать что-то подобное в моем bindings.xml:

<jaxb:schemaBindings>
    <jaxb:package name="my.package">
        <annox:annotate>
            <annox:annotate annox:class="my.Annotation" />
        </annox:annotate>
    </jaxb:package>
</jaxb:schemaBindings>

но Джаксб жалуется, что annox:annotate не ожидается там.

Есть ли другой способ сделать это?

1 ответ

Решение

Автор здесь.

Это не поддерживается на данный момент, но может быть легко реализовано. Пожалуйста, отправьте вопрос здесь: https://github.com/highsource/annox/issues

То, как это будет сделано, использует @target="package", Таким образом, вам придется что-то настроить в этом пакете (класс, что угодно) и установить target приписывать package, Аннотация будет затем перейти к package-info.java,

ОБНОВИТЬ

Это реализовано в JAXB2 Annotate Plugin 1.0.0.

https://github.com/highsource/jaxb2-annotate-plugin/issues/1

Пример:

<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:annox="http://annox.dev.java.net"
    jaxb:extensionBindingPrefixes="annox"

    jaxb:version="2.1">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
        <jaxb:bindings node="xsd:complexType[@name='issueJIIB43Type']">
            <annox:annotate target="class">@javax.xml.bind.annotation.XmlRootElement("someElement")</annox:annotate>
            <annox:annotate target="package">@javax.xml.bind.annotation.XmlSchema(elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)</annox:annotate>
            <annox:annotatePackage>@javax.annotation.Generated({"XJC"})</annox:annotatePackage>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>
Другие вопросы по тегам