问题标签 [jaxb2-annotate-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jaxb - jaxb2-annotate-plugin:向 XJC 类路径添加注释
是否可以将自定义注释添加到 XJC 类路径,而它们是在我的项目本身中定义的?这在使用 maven jaxb2-annotate-plugin时。
问题与此文档有关:
注释类必须在编译时已知。即注释类必须在 XJC 类路径中可用。如果您想使用自己的注解,您必须预编译它们并将您的注解类添加到 XJC 类路径中。
当我创建一个单独的项目并将其添加到插件时,它可以正常工作,如文档示例中所示。
但我想使用位于同一项目中的注释。我怎么让它被捡起来?如果我在之前的一个阶段编译它process-resources
,使用以下部分:
该类在我的 XSD 生成之前被编译,但我仍然得到异常AnnotationClassNotFoundException
。我想避免仅仅为了添加注释而制作单独的项目和/或模块。为什么它找不到我的类,并且提供注释的唯一方法似乎是外部项目/模块?
java - 来自 xsd 的自定义注释
尝试使用高源/jaxb2-annotate-plugin 库在从 XSD 生成的类上生成自定义注释,但出现一些错误。需要使用 JsonView 注释生成类,但无法解析该注释。Jackson 库已经在路径中(支持/具有 JsonView),但仍然失败。无法破译还有什么可能是错的。
@lexicore - 我相信你可以提供帮助,因为我看到你是 Github 上这个库的开发者。我确实遵循了 GitHub 上的文档,但无法弄清楚。请告知我是否在设置中遗漏了任何内容。
错误片段:
测试_1.xsd
(显示支持 JsonView 注释和支持类的依赖 jar)。http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 一个视图 0.0.1-SNAPSHOT
注意:Jackson-annotations-2.8.3 jar 位于具有 JsonView 类的类路径中。
jaxb - Jaxb2-annotate-plugin 不适用于剧集
我正在尝试对生成的 JAXB 类强制执行枚举验证,但是在绑定它们时遇到了一些问题。
基本的 XSD 设置是:
为了证明我的课程重复我正在使用剧集,但是在 enumsXSD 中添加注释时看起来这并不好
编码:
并在枚举 XSD
理想情况下,@deprecated 应该是@XmlJavaTypeAdapter(FooAdapter.class)
,但我认为让我们从小处着手。
xsd - 操作 JAXB 以创建 IDREF 元素而不是 JaxBElement
我想使用 maven-jaxb2-plugin 生成类。
我的输入 xsd 如下所示:
请注意,我无法更改架构,因为它是由外部客户提供的!
这是生成的代码:
如您所见,“ReferencedElementB”生成为带有@XMLElementRef-Annotation 的List>。
我想要的是如下所示:
使用Blaise Doughan的解决方法,我使用以下代码扩展了绑定文件:
这几乎完成了工作,生成如下代码:
但是,@XmlIDREF-Annotation 仍然缺失。这会在编组期间产生错误。
我试图通过 annox-plugin 注入缺少的注释:
但是一代失败了
再一次,我无法更改输入 xsd。
先感谢您!
java - JAXB 绑定以使用自定义注释注释 /schema 下所有模式中的所有字符串
我有一个 dir /schemas有许多.xsd文件,我想用我创建的自定义注释来注释String类型的每个字段。
我正在使用这个插件:“org.jvnet.jaxb2_commons:jaxb2-basics-annotate:0.6.4”。
我认为创建一个 jaxb 绑定配置将是我理想的解决方案。我试过这个:
但徒劳无功。你能帮我吗?谢谢
java - jaxb2-annotate-plugin 为 lombok 注释添加损坏的可选内容
我正在使用 jaxb2-annotate-plugin 将项目 lombok 注释添加到我生成的 java 代码中。在某些情况下,插件会向注释添加可选的(在这种情况下是实验性的)额外信息。
注解类是lombok.NoArgsConstructor,有可选的实验参数onConstructor
典型和预期的输出应该是:
但我得到的是
我不想要添加的参数(不确定正确的术语是什么),此外,它是不正确的,因为它需要额外的信息,在这种情况下,需要添加到生成的构造函数的注释。
所以2个问题:
我怎样才能抑制这个添加的信息?
如果我确实想要这个添加的参数,我将如何添加必要的附加信息?
谢谢,莱纳斯
附言。作为与问题没有直接关系的旁白:这个插件对我来说是新的。我已经从提供的示例之一修改了 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使用 URI = file:/Users/kamb/workspace/oads_xml/versions/a0.2/build.xml 解析构建文件 /Users/kamb/workspace/oads_xml/versions/a0.2/build.xml 项目基础目录设置为:/用户/kamb/workspace/oads_xml/versions/a0.2
使用 URI = jar:file:/opt/local/apache 解析构建文件 jar:file:/opt/local/apache-ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml -ant-1.10.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml 来自 zip 文件 [属性] 加载环境 env。忽略属性“java.home”的覆盖 目标“generate-sources”的构建序列是 [generate-sources] 完整的构建序列是 [generate-sources, check, compile, package, install, test-compile, test, clean, ]
generate-sources:
[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] 的时间戳 [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
xml - xjc 为 IDREF 元素的集合生成不正确的 jaxb 注释
TL;DR:由 xjc + jaxb2-annotate + xew 生成的代码和注释不会产生所需的(或者,就此而言,是开箱即用的)xml 结构,它应该是 IDREF 元素的集合。
如果我在生成的代码中手动更改集合上的 jaxb 属性,它会按我的预期工作。
生成的是:
我想要的是:
生成的注释在运行时引发异常,指出 PersonType 没有 XmlRootElement。如果我添加它,它将运行,但 XML 集合不正确,具有 <person_type> 元素而不是 <investigfator> 元素。
我的问题是如何让 xjc 生成(我认为是“正确的”)注释?
鉴于此架构:
以及这些 xjc 绑定定制:
(相关)生成的代码是:
注意@XmlElementRef(name = "investigator", namespace = "http://example/test", type = JAXBElement.class)
当我使用这个生成的代码来构建一个包含几个 <investigator> 人和一个 <dataSubmitter> 人的 Java 对象(都在 <people> 集合中),然后尝试使用 jaxb 序列化它时,missing an @XmlRootElement annotation
会抛出上面提到的异常.
List<PersonType> investigators
现在,如果我手动将字段上的注释更改
为
并运行代码,我得到了预期的 IDREF 元素集合:
是否需要一些控制或绑定自定义来更正集合上的 jaxb 注释?或者另一种获得相同 XML 结构的方法?
谢谢
xml - jaxb2:忽略注释
这是我的maven-jaxb2-plugin
配置:
我的bindings.xml
文件是:
我xsd
的是:
尽管如此,我的课程InformarIncidenciaRequest
没有注释XmlRootElement
:
有任何想法吗?
jaxb - jaxb2 注释:从 XmlElement 中删除命名空间
我正在尝试删除namespace
属性:
这是我的注释:
它正在生成:
我怎么能从中namespace
删除@XmlElement
?
java - jaxb2-annotate-plugin 无法注释匿名类
我似乎无法让 xjc 注释匿名类。这就是我的自定义注释的样子
并且具有匿名类的元素如下
我希望看到使用自定义注释对生成字段进行注释