我没有新的gradle并且有一个多项目gradle构建,想要将WSDL2Java相关任务添加到其中一个项目中。 我编写了必要的任务来生成,编译,将生成的存根打包到jar中并将其添加到类路径中。 现在,我想在java编译开始之前执行这些任务。
以下是我编写新任务的方式
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任务以某种方式导致了这种循环依赖,但不确定如何摆脱它?
在构建主源之前,还有其他更好或惯用的方法来执行此源生成,生成源的编译,打包并将其添加到主源集类路径中吗?
答案 0 :(得分:1)
我使用Jaxb-Plugin here。 My 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类。这有帮助吗?
答案 1 :(得分:0)