【问题标题】:cxf-codegen-plugin in GradleGradle 中的 cxf-codegen-plugin
【发布时间】:2022-01-22 03:24:51
【问题描述】:

我在 Maven 中有以下插件,它工作正常。现在,我需要使用项目的gradle版本,所以需要使用gradle中的插件。我在下面尝试过,但我提到了错误。我正在使用 Java 11。任何帮助/建议都是可观的。

<plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.4.5</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/resources/wsdl/CarServices.wsdl
                                </wsdl>
                                <wsdlLocation>classpath:wsdl/CarServices.wsdl
                                </wsdlLocation>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

下面是build.gradle文件内容

    configurations {
        wsdl2java
    }

    dependencies {
        compile "org.apache.cxf:cxf-spring-boot-starter-jaxws:3.4.5"
    compile 'org.apache.cxf:cxf-rt-frontend-jaxws:3.4.5'
    compile 'org.apache.cxf:cxf-rt-transports-http:3.4.5'

    compile 'javax.xml.ws:jaxws-api:2.3.0'
    compile 'javax.jws:jsr181-api:1.0-MR1'
    compile 'javax.xml.bind:jaxb-api:2.3.0'

    wsdl2java 'javax.xml.bind:jaxb-api:2.3.0'
    wsdl2java 'com.sun.xml.bind:jaxb-ri:2.3.0'
    wsdl2java 'com.sun.xml.bind:jaxb-xjc:2.3.0'
    wsdl2java 'com.sun.xml.bind:jaxb-core:2.3.0'
    wsdl2java 'com.sun.xml.bind:jaxb-impl:2.3.0'

    wsdl2java 'javax.xml.ws:jaxws-api:2.3.0'
    wsdl2java 'javax.jws:jsr181-api:1.0-MR1'

    wsdl2java 'org.apache.cxf:cxf-tools-wsdlto-core:3.4.5'
    wsdl2java 'org.apache.cxf:cxf-tools-wsdlto-frontend-jaxws:3.4.5'
    wsdl2java 'org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:3.4.5'

    implementation 'javax.annotation:javax.annotation-api:1.3.2'
    annotationProcessor("javax.annotation:javax.annotation-api:1.3.2")
}

def wsdl2java = task generateJavaFromWsdl(type: JavaExec) {
    String wsdl = 'src/main/resources/wsdl/CarServices.wsdl'
    String genSrcDir = "${projectDir}/build/generated-sources/CarServices"

    inputs.file wsdl
    outputs.dir genSrcDir

    classpath configurations.wsdl2java
    main "org.apache.cxf.tools.wsdlto.WSDLToJava"

    args '-encoding', 'UTF-8', '-d', genSrcDir, wsdl

    OutputStream baos = new ByteArrayOutputStream()
    errorOutput = new OutputStream() {
        void write(int b) {System.err.write(b); baos.write(b) }
        void flush() { System.err.flush(); baos.flush() }
        void close() { System.err.close(); baos.close() }
    }

    doLast {
        def str = baos.toString()
        if (str.contains('Usage : wsdl2java') || str.contains('WSDLToJava Error')) {
            throw new TaskExecutionException(tasks[name],
                    new IOException('Apache CXF WSDLToJava has failed. Please see System.err output.'))
        }
    }
}
compileJava.dependsOn += wsdl2java
sourceSets.main.java.srcDirs = ['src/main/java', 'build/generated-sources/CarServices']

在构建时出现以下错误并且没有创建 Java 绑定类

Caused by: java.lang.ClassNotFoundException: javax.annotation.Resource

【问题讨论】:

    标签: maven gradle cxf java-11


    【解决方案1】:

    回答我自己的问题,因为它可能对其他人有所帮助。下面的“build.gradle”配置适用于 Java 11。它还创建了所需的 Java 绑定类以及端口类(接口)。参考链接已附上。

    https://ciscoo.github.io/cxf-codegen-gradle/docs/1.0.0-rc.3/user-guide/

        buildscript {
        repositories {
            mavenCentral()
            jcenter()
        }
    }
    
    plugins {
        id 'org.springframework.boot' version '2.6.2'
        id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        id 'java'
        id "io.mateo.cxf-codegen" version "1.0.0-rc.3"
    }
    
    apply plugin: 'groovy'
    apply plugin: 'java'
    
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    
    sourceCompatibility = '11'
    targetCompatibility = '11'
    
    repositories {
        mavenCentral()
    }
    
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        
        implementation 'org.springframework.boot:spring-boot-starter-web-services'
        
        implementation 'org.codehaus.groovy:groovy-all:3.0.2'
        
        cxfCodegen "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3" 
        cxfCodegen "jakarta.annotation:jakarta.annotation-api:1.3.5" 
        implementation 'javax.jws:javax.jws-api:1.1'
    }
    
    cxfCodegen {
        wsdl2java {
            example {
                wsdl = file("${projectDir}/src/main/resources/wsdl/BLZService.wsdl")
                outputDir = file("${buildDir}/generated-java") 
                markGenerated = true
            }
        }
    }
    
    compileJava.dependsOn wsdl2java
    
    
    test {
        useJUnitPlatform()
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 2012-04-27
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多