2

在编译代码之前,我需要执行一个包含 main 方法的 java 类。这是我到目前为止所尝试的:

task runSimple(type: JavaExec) {
    main = 'jjrom.ObjectGen'
    classpath = sourceSets.main.runtimeClasspath
    File prop1 = file(propFilePath)
    args '-sqlserver', '-force', prop1.path
    println "I'm done executing."
}
compileJava {
    dependsOn runSimple
}

当我使用命令 "gradle compileJava" 执行此脚本时,我收到以下错误消息:

我执行完了。

FAILURE:构建失败并出现异常。

出了什么问题:以下任务之间的循环依赖关系::classes --- :compileJava --- :runSimple --- :classes (*)

4

2 回答 2

2

如果需要在编译代码之前执行这个类,可以不给classpath = sourceSets.main.runtimeClasspath。后者包括已编译的代码,因此 Gradle 会自动推断runSimple.dependsOn compileJava,它与您一起compileJava.dependsOn runSimple提供循环任务依赖项。(准确地说,Gradle 推断runSimple.dependsOn classes,这又取决于compileJava。)

于 2013-10-23T00:16:34.423 回答
0

如果您JavaExec只需要使用dependecies类路径运行,只需将classpath变量更改为:

classpath = configurations.compile

或者,如果您对非常具体的类路径感兴趣,您可以像这样添加自定义配置:

configurations {
    customClasspath
}

dependencies {
    customClasspath files('path/to/your.jar')
}

task runSimple(type: JavaExec) {
    main = 'jjrom.ObjectGen'
    classpath = configurations.customClasspath
    File prop1 = file(propFilePath)
    args '-sqlserver', '-force', prop1.path
    println "I'm done executing."
}

compileJava {
    dependsOn runSimple
}
于 2015-12-29T07:51:41.187 回答