Gradle构建失败

时间:2015-11-11 14:50:11

标签: java spring gradle xsd jaxb

我正在使用https://spring.io/guides/gs/producing-web-service/#initial上的教程来尝试生成SOAP Web服务。我正在使用Gradle来管理我的依赖项。

我有一个.xsd文件,它指定了我想要gradle创建的某些类。

但是,当我尝试在eclipse中的build.gradle文件上运行gradle构建时,我收到以下错误:

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\zekucukkose\workspace2\gs-producing-web-service-initial\build.gradle' 
line: 32

* What went wrong:
A problem occurred evaluating root project 'gs-producing-web-service-initial'.

> Could not find method jaxb() for arguments [com.sun.xml.bind:jaxb-xjc:2.2.4-1]
 on root project 'gs-producing-web-service-initial'.

第27至34行如下:

27 dependencies {
28    compile("org.springframework.boot:spring-boot-starter-web")
29        compile("org.springframework.boot:spring-boot-starter-ws")
30    testCompile("org.springframework.boot:spring-boot-starter-test")
31    compile("wsdl4j:wsdl4j:1.6.1")
32    jaxb("com.sun.xml.bind:jaxb-xjc:2.2.4-1")
33    compile(files(genJaxb.classesDir).builtBy(genJaxb))
34 }

就我所知,jaxb是用于生成实际类的内容。

如果有人可以提供帮助,我真的很感激。 感谢

这是整个剧本:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.7.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'gs-producing-web-service'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
        compile("org.springframework.boot:spring-boot-starter-ws")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    compile("wsdl4j:wsdl4j:1.6.1")
    jaxb("com.sun.xml.bind:jaxb-xjc:2.2.4-1")
    compile(files(genJaxb.classesDir).builtBy(genJaxb))
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

task genJaxb {
    ext.sourcesDir = "${buildDir}/generated-sources/jaxb"
    ext.classesDir = "${buildDir}/classes/jaxb"
    ext.schema = "src/main/resources/countries.xsd"

    outputs.dir classesDir

    doLast() {
        project.ant {
            taskdef name: "xjc", classname: "com.sun.tools.xjc.XJCTask",
                    classpath: configurations.jaxb.asPath
            mkdir(dir: sourcesDir)
            mkdir(dir: classesDir)

            xjc(destdir: sourcesDir, schema: schema) {
                arg(value: "-wsdl")
                produces(dir: sourcesDir, includes: "**/*.java")
            }

            javac(destdir: classesDir, source: 1.6, target: 1.6, debug: true,
                    debugLevel: "lines,vars,source",
                    classpath: configurations.jaxb.asPath) {
                src(path: sourcesDir)
                include(name: "**/*.java")
                include(name: "*.java")
            }

            copy(todir: classesDir) {
                fileset(dir: sourcesDir, erroronmissingdir: false) {
                    exclude(name: "**/*.java")
                }
            }
        }
    }
}

configurations {
    jaxb
}

jar {
    baseName = 'gs-producing-web-service'
    version =  '0.1.0'
    from genJaxb.classesDir
}

2 个答案:

答案 0 :(得分:5)

您需要添加jaxb作为配置。这样:

configurations {
   jaxb
}

你能提供整个剧本吗?或项目来源?

答案 1 :(得分:1)

int main() { string input; cout << "Enter a letter grade: "; cin >> input; if (input == "A") cout << "The numeric value is 4.0" <<endl; ... } 部分之前移动task genJaxb