jaxb2-annotate-plugin добавление неработающего необязательного контента для аннотации lombok

Я использую плагин jaxb2-annotate-plugin для добавления аннотаций проекта lombok в мой сгенерированный код Java. В некоторых случаях плагин добавляет дополнительную (в данном случае экспериментальную) дополнительную информацию к аннотации.

Класс аннотации - lombok.NoArgsConstructor, который имеет необязательный экспериментальный параметр onConstructor.

Типичный и ожидаемый результат должен быть просто:

@NoArgsConstructor
public class Foo ...

Но то, что я получаю, это

@NoArgsConstructor(onConstructor = {

})
public class Foo ...

Я не хочу, чтобы добавленный параметр (не уверен, каков правильный термин для этого), и, кроме того, он некорректен, так как требует дополнительной информации, в данном случае, аннотаций для добавления в сгенерированный конструктор.

Итак 2 вопроса:

  1. Как я могу скрыть эту добавленную информацию?

  2. Если бы я хотел добавить этот параметр, как бы я добавил необходимую дополнительную информацию?

спасибо Линус

пс. Кроме того, не имеет прямого отношения к вопросу: этот плагин является новым для меня. Я изменил файл build.xml из одного из предоставленных примеров для запуска xjc с плагином через ant. В то время как код генерируется должным образом, вывод, кажется, говорит иначе. Подробный вывод муравья следует. Файл build.xml находится в jaxb2-annotate-plugin-master/samples/annotate/target/test-ant-Assembly / jaxb2-annotate-plugin-sample-annotate-1.1.1-SNAPSHOT /

ant -verbose generate-sources JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Apache Ant (TM) версия 1.10.1, скомпилированная 2 февраля 2017 г. Попытка файла сборки по умолчанию: build.xml Buildfile: /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml Обнаруженная версия Java: 1.8 в: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
Обнаруженная ОС: файл разбора Mac OS X /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml с URI = файл:/Users/kamb/workspace/oads_xml/versions/a0.2/build.xml Project базовый каталог установлен в /Users/kamb/workspace/oads_xml/versions/a0.2
Разбор jar файла сборки:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml с URI = jar: файл: / opt / local / apache -ant-1.10.1 / lib / ant.jar! /org/apache/tools/ant/antlib.xml из zip-файла [свойство] Загрузка среды env. Переопределение игнорируется для свойства "java.home" Последовательность сборки для цели (ей) `generate-sources'равна [generate-sources] Полная последовательность сборки: [generate-sources, check, compile, package, install, test-compile, test, чистый,]
генерировать-источники:
[xjc] идентификатор сборки XJC равен 2.3.0
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/bindings.xjb
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/commonTypes.xjb
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/person.xjb
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/variables.xjb
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/commonTypes.xsd
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/oads_metadata_a0.2.xsd
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/person.xsd
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/variables.xsd
[xjc] время последнего изменения входов - 1553044581000
[xjc] время последнего изменения выходов -9223372036854775808
[xjc] Подумайте об использовании /, чтобы XJC не делал ненужной компиляции
[xjc] Файл компиляции:/Users/kamb/workspace/oads_xml/versions/a0.2/commonTypes.xsd и другие
[xjc] Запись выходных данных в /Users/kamb/workspace/oads_xml/versions/a0.2/gen_src

  [xjc] Command invoked: xjc/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/bin/java
  [xjc] failure in the XJC task. Use the Ant -verbose switch for more details     
  /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml:106: xjc failed
at com.sun.tools.xjc.XJCBase.execute(XJCBase.java:731)   
at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:55)  
at org.jvnet.jaxb2_commons.xjc.XJC2Task.execute(XJC2Task.java:35)    
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)  
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)  
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)  
at org.apache.tools.ant.Target.execute(Target.java:435)  
at org.apache.tools.ant.Target.performTasks(Target.java:456)     
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)  
at org.apache.tools.ant.Project.executeTarget(Project.java:1376)     
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1260)    
at org.apache.tools.ant.Main.runBuild(Main.java:857)     
at org.apache.tools.ant.Main.startAnt(Main.java:236)     
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287)   
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113)

1 ответ

Хорошо, на дальнейших экспериментах я разобрался.

Мне нужно было использовать аннотации в стиле Java, а не то, что я думаю, это старый стиль, который я выбрал, посмотрев на старые вопросы по SE. Итак, вместо:

<jaxb:bindings node="xs:complexType[@name='typed_string_type']">
  <annox:annotate>
    <annox:annotate annox:class="lombok.Builder" />
    <annox:annotate annox:class="lombok.NoArgsConstructor" />
    <annox:annotate annox:class="lombok.AllArgsConstructor" />
  </annox:annotate>
</jaxb:bindings>

Мне нужно было использовать:

<jaxb:bindings node="xs:complexType[@name='value_with_unit_type']">
    <annox:annotate>@lombok.Builder</annox:annotate>
    <annox:annotate>@lombok.NoArgsConstructor</annox:annotate>
    <annox:annotate>@lombok.AllArgsConstructor</annox:annotate>
</jaxb:bindings>

Так просто.

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