gpt4 book ai didi

java - 包含的 JAXB 剧集编译不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:25 25 4
gpt4 key购买 nike

我有 2 个模式 A、B。我在 B 中重用了一些 A 元素。

我不使用命名空间。

我正在使用

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.9.0</version>

我已经将模式 A 包含在模式 B 中定义为:

<xs:include schemaLocation="classpath:my.schema.A.xsd"/>

目录为

REWRITE_SYSTEM "classpath:my.schema.A.xsd" "maven:my.schema:schema-a!/A.xsd"

jaxb 配置如下:

<configuration>
<generatePackage>my.schema.b</generatePackage>
<schemaIncludes>
<includes>B.xsd</includes>
</schemaIncludes>
<episodes>
<episode>
<groupId>my.schema</groupId>
<artifactId>schema-a</artifactId>
</episode>
</episodes>
<catalog>src/main/catalog/catalog.cat</catalog>
</configuration>

问题是,无论何时我指定剧集依赖性,架构都不会生成任何类,即使它包含一些我想为其生成类的 B 元素也是如此。

[INFO] Parsing input schema(s)...
[INFO] Compiling input schema(s)...
[INFO] Cleaning package directories.
[INFO] Finished execution.

当我删除剧集时,它运行良好并为模式 A 生成类 - 我确实想避免这种情况。

你有什么建议吗?

样本发表于 Jaxb episodic compilation

最佳答案

好的,我已经检查了你的例子。问题是您不使用命名空间。

检查您的 META-INF/sub-jaxb.episode文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxb:bindings scd="x-schema::">
<jaxb:schemaBindings map="false">
<jaxb:package name="schema.episode.a"/>
</jaxb:schemaBindings>
<jaxb:bindings scd="person">
<jaxb:class ref="schema.episode.a.Person"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>

你看到这个<jaxb:bindings scd="x-schema::">然后 <jaxb:schemaBindings map="false"> .这基本上告诉 XJC“不要在空命名空间中映射任何东西”。由于您的第二个模式( b.xsd )也不使用 namespace ,因此当您使用 a.xsd 时的剧集文件(上面的绑定(bind)),您禁止为 b.xsd 生成代码

总而言之,当使用剧集/单独的模式编译时,您不能将具有一个命名空间的模式放入不同的剧集中。这正是 include 的问题.

这不是 maven-jaxb2-plugin 中的错误.我也不会称它为 XJC 中的错误。默认情况下剧集就是这样运作的。

查看我的拉取请求 here ,它演示了在相应地处理命名空间时的片段式编译。

关于java - 包含的 JAXB 剧集编译不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com