我需要在编译代码之前执行一个java类,其中包含一个main方法。这是我到目前为止所尝试的:
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”执行此脚本时,收到此错误消息:
我已经完成了。
失败:构建因异常而失败。
出了什么问题:以下任务之间的循环依赖关系:: classes ---:compileJava ---:runSimple ---:classes(*)
答案 0 :(得分:2)
如果在编译代码之前需要执行此类,则不能给它classpath = sourceSets.main.runtimeClasspath
。后者包括已编译的代码,因此Gradle会自动推断runSimple.dependsOn compileJava
,它与您的compileJava.dependsOn runSimple
一起提供循环任务依赖性。 (确切地说,Gradle推断runSimple.dependsOn classes
,而后者又取决于compileJava
。)
答案 1 :(得分: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
}