带有wsdl2java插件的gradle

8aqjt8rx  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(224)

我使用no.nils.wsdl2java插件,完整的gradle.build文件看起来像:

plugins {
    id 'org.springframework.boot' version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.12.RELEASE'
    id 'java'
    id "no.nils.wsdl2java" version "0.10"
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    jaxb
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation group: 'com.oracle.ojdbc', name: 'orai18n', version: '19.3.0.0'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'com.google.code.gson:gson:2.8.5'
}

tasks.named('test') {
    useJUnitPlatform()
}
wsdl2java {
    generatedWsdlDir = file("build/generated/wsdl/Service")
    wsdlsToGenerate = [
            ['-p', 'Service', '-wsdlLocation', 'classpath:wsdl/Service.wsdl',
             '-autoNameResolution', "src/main/resources/wsdl/Service.wsdl"]
    ]
}

当我使用Gradle JVM版本11构建项目时,出现异常:
无法加载类'txtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtx'。

**但在版本8上出现错误:

org/apache/cxf/tools/wsdlto/WSDLToJava已由较新版本的Java运行时(类文件版本55.0)编译,此版本的Java运行时仅识别52.0之前的类文件版本。
我知道javax-〉jakarta名称空间迁移,但如何解决我的问题?

atmip9wb

atmip9wb1#

在您的build.gradle中添加以下内容:

wsdl2javaExt {
    cxfVersion = "3.5.5"
}

以明确指定Apache CXF版本。它应该可以正确地使用Java 8编译。
这个错误说org/apache/cxf/tools/wsdlto/WSDLToJava是用Java 11编译的,但是你的项目使用的是Java 8。这个类是由wsdl2java插件加载的:

def wsdlToJava = classLoader.loadClass("org.apache.cxf.tools.wsdlto.WSDLToJava").newInstance()

它是Apache CXF项目的一部分。要查看它的来源,可以打印依赖关系树:

./gradlew app:dependencies --configuration wsdl2java

在结果中,您可以找到:

+--- org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:+ -> 4.0.0
...
|    +--- org.apache.cxf:cxf-tools-wsdlto-core:4.0.0

org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb的版本设置为+,因此gradle使用最新版本,目前为4.0.0。该插件在以下行中添加了此依赖关系:

// add cxf as dependency
            project.dependencies {
                wsdl2java "org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:$cxfVersion"

$cxfVersion默认设置为+,但您可以使用以下代码在build.gradle中覆盖它:

wsdl2javaExt {
    cxfVersion = "3.5.5"
}

使用先前的Apache CXF版本(与Java 8兼容)

相关问题