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.