How to execute a task of type 'JavaExec' before compileJava
If you need to execute this class before compiling the code, you can't give it classpath = sourceSets.main.runtimeClasspath
. The latter includes the compiled code, and so Gradle automatically infers runSimple.dependsOn compileJava
, which together with your compileJava.dependsOn runSimple
gives a cyclic task dependency. (To be precise, Gradle infers runSimple.dependsOn classes
, which in turn depends on compileJava
.)
amitbansalite
Updated on June 15, 2022Comments
-
amitbansalite almost 2 years
I need to execute a java class which has a main method in it before compiling the code. This is what I have tried so far:
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 }
When I execute this script with the command "gradle compileJava" , I get this error message:
I'm done executing.
FAILURE: Build failed with an exception.
What went wrong: Circular dependency between the following task: :classes --- :compileJava --- :runSimple --- :classes (*)
-
shabunc over 3 yearsprintln won't be invoked after executing, your assumption is wrong.