如何在compileJava之前执行“JavaExec”类型的任务

ami*_*ite 5 java gradle build.gradle

在编译代码之前,我需要执行一个包含 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
}
Run Code Online (Sandbox Code Playgroud)

当我使用命令“gradlecompileJava”执行此脚本时,我收到以下错误消息:

我已经执行完了。

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

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

Pet*_*ser 3

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