【问题标题】:jaxb2-annotate-plugin adding broken optional content for lombok annotationjaxb2-annotate-plugin 为 lombok 注释添加损坏的可选内容
【发布时间】:2019-03-20 15:46:34
【问题描述】:

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

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

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

@NoArgsConstructor
public class Foo ...

但我得到的是

@NoArgsConstructor(onConstructor = {

})
public class Foo ...

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

所以 2 个问题:

  1. 如何隐藏这些添加的信息?

  2. 如果我确实想要这个添加的参数,我将如何添加必要的附加信息?

谢谢, 莱纳斯

ps。 作为与问题没有直接关系的旁白:这个插件对我来说是新的。我已经从提供的示例之一修改了 build.xml 文件,以通过 ant 使用插件运行 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
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 解析构建文件 /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:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml 与 URI = jar:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml 从 zip 文件 [属性] 加载环境 env。覆盖 忽略属性“java.home” 目标的构建序列 `generate-sources' 是 [generate-sources] 完整的构建序列 是[生成源,检查,编译,打包,安装,测试编译, 测试,清洁,]
生成来源:
[xjc] XJC 的 build 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 lombok xjc jaxb2-annotate-plugin


    【解决方案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>
    

    如此简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 2020-05-02
      相关资源
      最近更新 更多