gpt4 book ai didi

xsd - 如何在命令行中将 jaxb2-annotate-plugin 与 XJC 一起使用

转载 作者:行者123 更新时间:2023-12-04 19:48:34 25 4
gpt4 key购买 nike

我在命令行 (xjc.bat) 中使用“jaxb-ri”构建基于 xsd 的 java 类。
我想使用 jaxb2-annotate_plugin 在 XmlType 注释中设置命名空间,但我不知道如何将此插件添加到 xjc 类路径并激活它。

这是我的外部 bindings.xjb 文件:

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:annox="http://annox.dev.java.net"
jxb:extensionBindingPrefixes="xjc annox"
version="2.1">
<jxb:bindings schemaLocation="myschema.xsd" node="/xs:schema">
<jxb:bindings node="xs:complexType[@name='MyType]">
<annox:annotateClass>@javax.xml.bind.annotation.XmlType(namespace="urn:myschematwo")</annox:annotateClass>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>

我的命令行是:
D:/jaxb-ri/bin/xjc.bat -p "com.jaxb.mypackage" -d
"D:/myproject/src/main/java" D:/myschema.xsd -b "D:/bindings.xjb"
-extension

当我执行此命令时,我收到一条错误消息,指出不支持“ http://annox.dev.java.net”。

提前致谢。

最佳答案

免责声明:我是 jaxb2-annotate-plugin 的作者.

首先,我不提供命令行示例(据我所知)没有人使用命令行或批处理脚本进行模式编译。至少到目前为止,没有人提出这样的要求。有samplesAntMaven ,Ant 最接近命令行的用法。

接下来,我想知道 xjc.bat 中的内容是什么? .

如果它调用 xjc.exe从 Java 发行版来看,这很可能根本不适用于第三方插件,而不仅仅是 jaxb2-annotate-plugin .原因是Java自带的XJC版本有一个改名的包:com.sun.tools.** -> com.sun.tools.internal.** .这打破了,自然与插件的兼容性。所以请确保xjc.bat不叫xjc.exe包含在 Java 发行版中。

希望xjc.bat电话com.sun.tools.xjc.XJCFacade来自 JAXB RI jar 。

要执行插件,您需要做两件事:

  • 将所有必需的依赖项包含到类路径中。
  • 使用 -Xannotate 打开插件命令行参数。

  • 这些依赖是:
                    <!-- JAXB2 Basics library -->
    <include name="jaxb2-basics-*.jar"/>
    <include name="jaxb2-basics-annotate*.jar"/>
    <!-- JAXB2 Basics library dependencies -->
    <include name="annox-*.jar"/>
    <include name="javaparser-*.jar"/>
    <include name="commons-beanutils-*.jar"/>
    <include name="commons-logging-*.jar"/>
    <include name="commons-lang3-*.jar"/>

    这是完整的依赖树(带版本):
    [INFO] org.jvnet.jaxb2_commons:jaxb2-basics-annotate:jar:1.0.3-SNAPSHOT
    [INFO] +- org.jvnet.jaxb2_commons:jaxb2-basics-tools:jar:0.8.1:compile
    [INFO] | +- commons-beanutils:commons-beanutils:jar:1.7.0:compile
    [INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
    [INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.2.7:provided
    [INFO] | +- com.sun.xml.bind:jaxb-core:jar:2.2.7:provided
    [INFO] | | +- javax.xml.bind:jaxb-api:jar:2.2.11:provided
    [INFO] | | \- com.sun.istack:istack-commons-runtime:jar:2.16:provided
    [INFO] | \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.12:provided
    [INFO] | \- javax.xml.bind:jsr173_api:jar:1.0:provided
    [INFO] +- com.sun.xml.bind:jaxb-xjc:jar:2.2.7:provided
    [INFO] +- org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-testing:jar:0.9.0:test
    [INFO] | \- org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:jar:0.9.0:test
    [INFO] | +- org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-core:jar:0.9.0:test
    [INFO] | | +- com.sun.org.apache.xml.internal:resolver:jar:20050927:test
    [INFO] | | +- org.apache.maven:maven-plugin-api:jar:2.0.9:test
    [INFO] | | +- org.sonatype.plexus:plexus-build-api:jar:0.0.7:test
    [INFO] | | \- org.apache.maven:maven-project:jar:2.0.9:test
    [INFO] | | +- org.apache.maven:maven-settings:jar:2.0.9:test
    [INFO] | | +- org.apache.maven:maven-profile:jar:2.0.9:test
    [INFO] | | +- org.apache.maven:maven-model:jar:2.0.9:test
    [INFO] | | +- org.apache.maven:maven-artifact-manager:jar:2.0.9:test
    [INFO] | | | +- org.apache.maven:maven-repository-metadata:jar:2.0.9:test
    [INFO] | | | \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:test
    [INFO] | | +- org.apache.maven:maven-plugin-registry:jar:2.0.9:test
    [INFO] | | \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:test
    [INFO] | | \- classworlds:classworlds:jar:1.1-alpha-2:test
    [INFO] | +- org.codehaus.plexus:plexus-utils:jar:1.5.15:test
    [INFO] | +- org.jvnet.jaxb2.maven2:maven-jaxb22-plugin:jar:0.9.0:test
    [INFO] | \- org.apache.maven.plugin-tools:maven-plugin-annotations:jar:3.2:test
    [INFO] | \- org.apache.maven:maven-artifact:jar:3.0:test
    [INFO] +- org.jvnet.annox:annox:jar:1.0.1:compile
    [INFO] | +- org.apache.commons:commons-lang3:jar:3.2.1:compile
    [INFO] | +- commons-io:commons-io:jar:1.2:compile
    [INFO] | \- com.google.code.javaparser:javaparser:jar:1.0.11:compile
    [INFO] \- junit:junit:jar:4.11:test
    [INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test

    Maven 的东西是不相关的,否则你应该能够看到版本。

    希望这可以帮助。

    老实说,我有点不愿意在批处理/命令行示例上投入时间。但是,如果您可以使用一个,我会将其添加到示例中。

    为什么您实际上需要在命令行中使用它?

    关于xsd - 如何在命令行中将 jaxb2-annotate-plugin 与 XJC 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525642/

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