需要从绑定文件中生成 package-info.java 中的 JAXB 注释

Posted

技术标签:

【中文标题】需要从绑定文件中生成 package-info.java 中的 JAXB 注释【英文标题】:Need to generate JAXB annotions in package-info.java from binding file 【发布时间】:2011-08-25 04:34:34 【问题描述】:

我有一个XmlAdapter 的注解,我需要将它放入package-info.java 中。问题是,我们的package-info.java 是从XJC 自动生成的。有没有办法使用 JAXB 绑定文件在生成时自动将这个注解添加到 package-info.java 中?

@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters
(
    @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value=Adapter.class,type=Original.class)
)

感谢您的帮助!

【问题讨论】:

【参考方案1】:

不幸的是,在外部绑定文件中定义自定义元素时,上面的优雅语法不起作用。 Annotate Plugin 为您提供了一种从 XJC 绑定自定义中读取注释并自动添加到您的 XmlAdapter 类中的方法。 因此,您的适配器类将被添加到您的 package-info.java。

<jaxb:bindings
  version="2.1"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:annox="http://annox.dev.java.net" 
  jaxb:extensionBindingPrefixes="annox">

  <jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
    ...
    <jaxb:bindings node="xs:complexType[@name='...']/xs:sequence/xs:element[@name='name']">
      <annox:annotate>
        <annox:annotate
          annox:class="org.hibernate.search.annotations.FieldBridge"
          impl="com.acme.foo.MyFieldBridge">
          <annox:annotate annox:field="params">
            <annox:annotate annox:class="org.hibernate.search.annotations.Parameter"
              name="foo"
              value="bar"/>
          </annox:annotate>
        </annox:annotate>
      </annox:annotate>
    </jaxb:bindings>
    ...
  </jaxb:bindings>

</jaxb:bindings>

生产:

@FieldBridge(impl = com.acme.foo.MyFieldBridge.class, params = 
  @Parameter(name = "foo", value = "bar")
)

另一种方法是将绑定添加到您的架构:直接在架构文件中:

见Annotate Plugin

【讨论】:

hmmmm...我有点困惑..您是说上面产生的输出将在我的适配器或 package-info.java 中产生? 在您的 package-info.java 中,但您可以为您的适配器执行此操作 除了使用适配器之外,还有其他方法可以使用绑定文件进行类替换吗?

以上是关于需要从绑定文件中生成 package-info.java 中的 JAXB 注释的主要内容,如果未能解决你的问题,请参考以下文章

[YOLO专题-15]:YOLO V5 - 如何从视频文件中生成训练样本的原始图片

如何在未绑定的 xml 结构中生成逗号分隔的字符串

如何使用存储过程在 SQL Server 中生成表的数据脚本文件?

如何在 Clojure 中生成记忆递归函数?

javascript 使用标记文件从markdown文件夹中生成博客文章

从数据库中生成XML文件