如何在gradle-jaxb-plugin中使用jaxb插件扩展

时间:2015-06-30 14:35:11

标签: java gradle jaxb jaxb2-basics

我使用gradle-jaxb-plugin从XSD生成类: https://github.com/jacobono/gradle-jaxb-plugin

它可以正常使用外部绑定,我可以使用内置 XJC扩展没有问题。但我没有管理jaxb 扩展插件工作,特别是 - 来自的传播 jaxb2-基础知识。

当我尝试gradle-jaxb-plugin中提出的配置时 文档,我收到以下错误:

:pwa-application:xjc FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pwa-application:xjc'.
> java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: Provider org.jvnet.jaxb2_commons.plugin.jaxbindex.JaxbIndexPlugin not a subtype

我在这个帖子中找到了解释: com.sun.tools.xjc.Plugin: Provider <plugin> not a subtype 但是那里没有gradle-jaxb-plugin的解决方案,我卡住了。

2 个答案:

答案 0 :(得分:5)

好吧,我现在可以自己回答我的问题了。

解决方案就是使用

<head>

文档中提到了,但没有解释。 现在我知道它是为了什么。

答案 1 :(得分:0)

我遇到了同样的错误。
项目使用的是Java 11,但是JAVA_HOME指向Java 8。

JAVA_HOME环境中更改路径后。 Java 11的变量),该问题已解决

仅供参考-我们正在使用Gradle,并且为Java 11工作的XJC定义如下:

project.ant {
    taskdef name: "xjc",
            classname: "com.sun.tools.xjc.XJCTask",
            classpath: configurations.jaxb.asPath
    mkdir(dir: sourcesDir)
    mkdir(dir: classesDir)

    xjc(destdir: sourcesDir) {
        schema(dir: "src/main/resources/xsd", includes: "*.xsd", excludes: "XSD_FILENAME.xsd")
        arg(value: "-wsdl")
        arg(value: "-extension")
        arg(value: "-Xinheritance")
        arg(value: "-Xannotate")
        produces(dir: sourcesDir, includes: "**/*.java")
        binding(dir: "src/main/resources/xsd", includes: "bindings.xjb")
    }
}