jaxb2_commons:jaxb2-basics 不适用于 com.intershop.gradle.jaxb 6.0.0

问题描述 投票:0回答:2

我尝试使用新版本的 com.intershop.gradle.jaxb:6.0.0 和 gradle:8.1.1 从 wsdl 生成 java 类。但我需要 jaxb2-basics 扩展才能使用“-XtoString”参数。当我添加

jaxbext 'org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1'

到我的依赖项部分并尝试生成,即使没有“-XtoString”参数我也遇到了错误:

* What went wrong:
Execution failed for task ':jaxbJavaGenCsClientWs'.
> xjc failed

* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':jaxbJavaGenCsClientWs'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:149)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:147)

这是我的 gradle 项目的完整配置。我用的是java17。

plugins {
    id "java"
    id 'com.intershop.gradle.jaxb' version '6.0.0'
}

sourceSets {
    main {
        java {
            srcDir "${project.buildDir}/generated-java/csClientWs"
        }
    }
}

repositories {
    mavenCentral()
}

ext {
    testV = '4.7.472.60'
}

dependencies {
    implementation 'com.sun.xml.bind:jaxb-xjc:4.0.2'
    implementation 'com.sun.xml.bind:jaxb-jxc:4.0.2'
    implementation 'com.sun.xml.bind:jaxb-impl:4.0.2'
    implementation 'com.sun.xml.bind:jaxb-core:4.0.2'
    implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.2'
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.1'
    implementation 'jakarta.activation:jakarta.activation-api:2.1.0'

    jaxbext 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'
    jaxbext 'net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8'
    jaxbext 'com.github.jaxb-xew-plugin:jaxb-xew-plugin:2.1'

    //jaxbext 'org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1'

    //implementation 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:1.11.1'
    //implementation 'org.jvnet.jaxb2_commons:jaxb2-basics-runtime:1.11.1'
    //implementation 'org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1'
    //implementation 'org.jvnet.jaxb2_commons:jaxb2-basics-annotate:1.1.0'
}

jaxb {
    javaGen {
        csClientWs {
            strictValidation = false
            extension = true
            packageName = 'org.excample.csclient.ws'
            header = true
            schema = file("${projectDir}/src/main/wsdl/test_${testV}.wsdl")
            binding = file("${projectDir}/src/main/wsdl/binding.xjb")
            args = ['-wsdl', '-Xxew', '-Xfluent-api']
        }
    }
}

我希望当我取消注释 jaxbext 'com.github.jaxb-xew-plugin:jaxb-xew-plugin:2.1' 下面的所有部分时,jaxb2-basics 将正常工作,并且当我将 '-XtoString' 添加到它生成的 args 部分时正确的java类。当此部分被注释时(就像在我的示例中),它工作得很好。

gradle jaxb jaxb2-basics
2个回答
0
投票

尝试使用这些依赖项而不是

org.jvnet.jaxb2_commons
工件:

implementation 'org.patrodyne.jvnet:hisrc-basicjaxb-ant:2.1.0'
implementation 'org.patrodyne.jvnet:hisrc-basicjaxb-runtime:2.1.0'
implementation 'org.patrodyne.jvnet:hisrc-basicjaxb-plugins:2.1.0'
implementation 'org.patrodyne.jvnet:hisrc-hyperjaxb-annox-plugin:2.1.0'

HiSrc BasicJAXB 项目的 2.1.0 版本是一个重要版本,其源/目标(版本)兼容性为 Java 11,高于 Java 8。并且,使用 JDK 17 进行构建。 JAXB 依赖项为 4.x 版本。

另请参阅

BasicJAXB V2 命名空间更改

免责声明:我是HiSrc分叉的维护者。


0
投票
您可以根据目标 JDK 和 JAXB API(v4 是一个不错的),使用以下

迁移指南 来帮助获取最新版本的 org.jvnet.jaxb

 工件。

我们还在最新版本中添加了

jaxb-fluent-api

 的向后移植

因此会导致以下配置

dependencies { implementation 'com.sun.xml.bind:jaxb-xjc:4.0.2' implementation 'com.sun.xml.bind:jaxb-jxc:4.0.2' implementation 'com.sun.xml.bind:jaxb-impl:4.0.2' implementation 'com.sun.xml.bind:jaxb-core:4.0.2' implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.2' implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.1' implementation 'jakarta.activation:jakarta.activation-api:2.1.0' jaxbext 'com.github.jaxb-xew-plugin:jaxb-xew-plugin:2.1' jaxbext 'org.jvnet.jaxb:jaxb-plugins:4.0.0' //implementation 'org.jvnet.jaxb:jaxb-plugins-ant:4.0.0' //implementation 'org.jvnet.jaxb:jaxb-plugins-runtime:4.0.0' //implementation 'org.jvnet.jaxb:jaxb-plugins:4.0.0' //implementation 'org.jvnet.jaxb:jaxb-plugin-annotate:4.0.0' } jaxb { javaGen { csClientWs { strictValidation = false extension = true packageName = 'org.excample.csclient.ws' header = true schema = file("${projectDir}/src/main/wsdl/test_${testV}.wsdl") binding = file("${projectDir}/src/main/wsdl/binding.xjb") args = ['-wsdl', '-Xxew', '-Xfluent-api', '-XtoString'] } } }
只需添加您想要的好参数(添加

-XtoString

)并根据需要取消注释实现部分。

我还发现很奇怪,你添加了 jaxb-api“2.4.0”作为 jaxbext,在上面的配置中已被删除。

© www.soinside.com 2019 - 2024. All rights reserved.