maven-jaxb2-plugin: как использовать мою собственную EqualsStrategy

Я использую maven-jaxb2-плагин для генерации equals а также hashCode методы.

Я реализовал собственные стратегии, полученные из JAXBEqualsStrategy а также JAXBHashCodeStrategy,

Есть ли способ сказать плагину использовать эти стратегии вместо стандартных?

Например, с помощью конфигурации, как

<arg>-Xequals=my.own.EqualsStrategy</arg>

1 ответ

Решение

Вы были почти правы

<build>
    <defaultGoal>test</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <configuration>
                <extension>true</extension>
                <args>
                    <arg>-XtoString</arg>
                    <arg>-Xequals</arg>
                    <arg>-Xequals-equalsStrategyClass=my.own.EqualsStrategy</arg>
                    <arg>-XhashCode</arg>
                    <arg>-XhashCode-hashCodeStrategyClass=my.own.HashCodeStrategy</arg>
                </args>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>
    </plugins>
</build>

Если ваши стратегии не имеют состояния (они обычно должны быть), вы можете создать одиночные экземпляры как public static final INSTANCE поля в классах стратегии. Затем вы можете включить JAR с вашими стратегиями как configuration/plugins/plugin (просто чтобы добавить его в путь к классам XJC) и сгенерированный код будет использовать INSTANCE поля вместо создания новых экземпляров стратегий.

Отказ от ответственности: я являюсь автором основ JAXB2, рассматриваемого пакета плагинов JAXB.

Другие вопросы по тегам