【发布时间】: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
【问题讨论】: