JAXB2-ANGOTATE-PLUGIN添加了lombok注释的可选内容破裂



我正在使用jaxb2-antotate-plugin将项目Lombok注释添加到我生成的Java代码中。在某些情况下,该插件将可选的(在本例中为实验)添加到注释中。

注释类是Lombok.noargsconstructor,它具有可选的实验参数OnConstructor

典型和预期的输出应该只是:

@NoArgsConstructor
public class Foo ...

但是我得到的是

@NoArgsConstructor(onConstructor = {
})
public class Foo ...

我不希望添加的参数(不确定正确的术语是什么),此外,由于需要其他信息,在这种情况下,它需要添加到生成的构造函数的注释是不正确的。

所以2个问题:

  1. 如何抑制此添加的信息?

  2. 如果我想要此添加的参数,我将如何添加必要的其他信息?

谢谢linus

ps。除了与问题没有直接相关的外面:这个插件对我来说是新的。我已将build.xml文件从提供的样本之一修改为XJC,并通过ant插件运行XJC。在正确生成代码时,输出似乎是相反的。详细的蚂蚁输出随之而来。build.xml文件来自jaxb2-antotate-plugin-master/sampers/antotate/target/test-test-and-sembly/jaxb2-antotate-plugin-sample-sample-antotate-1.1.1-snapshot/

ant -verbose生成 - 源java_home: /library/java/javavirtualmachines/jdk1.8.0_121.jdk/contents/home
Apache Ant(TM)版本1.10.1于2017年2月2日汇编 默认构建文件: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
检测到的OS:Mac OS X解析buildfile /USERS/kamb/workspace/oads_xml/versions/a0.2/build.xml with uri = file:/users/kamb/workspace/oads_xml/versions/a0.2/build.xml项目 基本dir设置为:/Users/kamb/workspace/oads_xml/versions/a0.2
解析buildfile jar:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/ant/antlib.xml 与Uri = jar:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/ant/antlib.xml 从zip文件[属性]加载环境env。覆盖 对于目标的属性" java.home"构建序列而忽略了目标 "生成源"是[生成源]完整的构建顺序 是[生成源,检查,编译,包装,安装,测试编译, 测试,干净,]
生成源:
[XJC] XJC的构建ID为2.3.0
[XJC]检查/users/kamb/workspace/oads_xml/a0.2/a0.2/bindings.xjb
检查时间戳 [XJC]检查/users/kamb/workspace/oads_xml/a0.2/commontypes.xjb
的时间戳
[XJC]检查/users/kamb/workspace/oads_xml/a0.2/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/a0.2/a0.2/oads_metadata_a0.2.xsd
[XJC]检查/users/kamb/workspace/oads_xml/a0.2/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)

好吧,在进一步的实验中,我发现了它。

我需要使用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>

如此简单。

最新更新