jaxb2-annotate-plugin为lombok注释添加损坏的可选内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jaxb2-annotate-plugin为lombok注释添加损坏的可选内容相关的知识,希望对你有一定的参考价值。

我正在使用jaxb2-annotate-plugin将项目lombok注释添加到我生成的java代码中。在某些情况下,插件会向注释添加可选的(在本例中为实验性)额外信息。

注释类是lombok.NoArgsConstructor,它具有可选的实验参数onConstructor

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

@NoArgsConstructor
public class Foo ...

但我得到的是

@NoArgsConstructor(onConstructor = {

})
public class Foo ...

我不想要添加的参数(不确定适当的术语是什么),此外,它是不正确的,因为它需要额外的信息,在这种情况下,添加到生成的构造函数的注释。

那2个问题:

  1. 如何抑制这些添加的信息?
  2. 如果我确实想要这个添加的参数,我该如何添加必要的附加信息?

谢谢,Linus

PS。另外与问题没有直接关系:这个插件对我来说是新的。我已经从一个提供的示例修改了build.xml文件,通过ant运行xjc插件。在正确生成代码的同时,输出似乎另有说法。详细的蚂蚁输出如下。 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 2017年2月2日编译的Apache Ant(TM)版本1.10.1尝试使用默认构建文件:build.xml构建文件:/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使用URI = file解析buildfile /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml:/Users/kamb/workspace/oads_xml/versions/a0.2/build.xml项目base 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/antlib.xml,URL = jar:file:/ opt / local / apache来自zip文件的-ant-1.10.1 / lib / ant.jar!/org/apache/tools/ant/antlib.xml [property] Loading Environment env。属性“java.home”忽略覆盖目标的生成序列`generate-sources'是[generate-sources]完整的构建序列是[generate-sources,check,compile,package,install,test-compile,test,干净,] 产生来源: [xjc] XJC的构建ID是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)
答案

好的,在进一步的实验中,我想通了。

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

很简单。

以上是关于jaxb2-annotate-plugin为lombok注释添加损坏的可选内容的主要内容,如果未能解决你的问题,请参考以下文章

IDEA相关

@Data注解简化代码

3D打印机防静电保护

3D打印机防静电保护

3D打印机防静电保护

Lombok介绍使用方法和总结