jaxb2-annotate-plugin добавление неработающего необязательного контента для аннотации lombok - PullRequest
0 голосов
/ 20 марта 2019

Я использую 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 Файл сборки: /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml Обнаруженная версия Java: 1.8 in: /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 Базовый каталог проекта установлен в: /Users/kamb/workspace/oads_xml/versions/a0.2
файл jar: build: 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 иззиp file [property] Загрузка среды env.Переопределение игнорируется для свойства "java.home" Последовательность сборки для цели (ей) `generate-sources 'равна [generate-sources] Полная последовательность сборки: [generate-sources, check, compile, package, install, test-compile, test,clean,]
generate-sources:
[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 / version / a0.2 / person.xjb
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/variables.xjb
[xjc] Проверка метки времени / Users / kamb / workspace / oads_xml /version / a0.2 / commonTypes.xsd
[xjc] Проверка метки времени /Users/kamb/workspace/oads_xml/versions/a0.2/oads_metadata_a0.2.xsd
[xjc] Проверка метки времени / Users /kamb / workspace / oads_xml / версии / a0.2 / person.xsd
[xjc] Проверка метки времени / Users / kamb / workspace / oads_xml / version / 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 Ответ

0 голосов
/ 20 марта 2019

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

Мне нужно было использовать аннотации в стиле 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>

Так просто.

...