Gradle:从WSDL生成源&;XSD并将其添加到主类路径进行编译
我是gradle的新手,有一个多项目gradle构建,希望在其中一个项目中添加与WSDL2Java相关的任务。 我已经编写了必要的任务来生成、编译、将生成的存根打包到jar中并将其添加到类路径中。 现在,我想在java编译开始之前执行这些任务 下面是我如何编写新任务的代码Gradle:从WSDL生成源&;XSD并将其添加到主类路径进行编译,gradle,wsdl2java,build.gradle,Gradle,Wsdl2java,Build.gradle,我是gradle的新手,有一个多项目gradle构建,希望在其中一个项目中添加与WSDL2Java相关的任务。 我已经编写了必要的任务来生成、编译、将生成的存根打包到jar中并将其添加到类路径中。 现在,我想在java编译开始之前执行这些任务 下面是我如何编写新任务的代码 task genClasses(type: JavaExec) { //Run WSDL2Java and generate java source files. } task compileClasses(dependsO
task genClasses(type: JavaExec) {
//Run WSDL2Java and generate java source files.
}
task compileClasses(dependsOn:'genClasses'){
//Use ant.javac or add type:JavaCompile in task defination as shown below
// task compileClasses(dependsOn:'genClasses',type:JavaCompile)
}
task packageClasses(dependsOn:'compileClasses',type:Jar){
//package my jar
}
task createStubs(dependsOn: 'packageClasses'){
//add created jar to the classpath
}
compileJava.dependsOn createStubs
生成失败,出现异常,并显示以下消息
Circular dependency between tasks. Cycle includes [task ':projectx:genWsdlClasses', task ':projectx:classes'].
我发现compileClasses任务以某种方式导致了这种循环依赖,但不确定如何消除它
在主源代码生成之前,是否有其他更好或惯用的方法来执行此源代码生成、编译生成的源代码、打包并将其添加到主源代码集类路径?我使用可用的Jaxb插件。我的Gradle生成文件如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'no.entitas.gradle.jaxb:gradle-jaxb-plugin:2.0'
}
}
dependencies {
jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.5-1'
jaxb 'com.sun.xml.bind:jaxb-impl:2.2.5-1'
}
generateSchemaSource.destinationPackage = "my.custom.package"
我相信这将创建您想要的jaxb类。这有帮助吗?我使用可用的Jaxb插件。我的Gradle生成文件如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'no.entitas.gradle.jaxb:gradle-jaxb-plugin:2.0'
}
}
dependencies {
jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.5-1'
jaxb 'com.sun.xml.bind:jaxb-impl:2.2.5-1'
}
generateSchemaSource.destinationPackage = "my.custom.package"
我相信这将创建您想要的jaxb类。这有帮助吗?使用插件“no.nils.wsdl2java”
该插件负责将其与构建和清理任务挂钩 使用插件“no.nils.wsdl2java”
该插件负责将其与构建和清理任务挂钩 为了匹配gradle文件,错误消息是否应该显示“genClasses”?或者第一个任务实际上应该命名为genWsdlClasses?我不是想挑剔;我想确保我没有遗漏什么。我将你的代码复制粘贴到一个gradle文件中,添加了java插件,删除了JavaExec类型,它运行得很好。诚然,它基本上什么也没做,但它起作用了。这里也一样。对我来说很好。你能发布完整的构建脚本吗?为了匹配你的gradle文件,错误消息应该是“genClasses”吗?或者第一个任务实际上应该命名为genWsdlClasses?我不是想挑剔;我想确保我没有遗漏什么。我将你的代码复制粘贴到一个gradle文件中,添加了java插件,删除了JavaExec类型,它运行得很好。诚然,它基本上什么也没做,但它起作用了。这里也一样。对我来说很好。你能发布完整的构建脚本吗?