Gradle JavaExec任务始终在执行

Gradle JavaExec任务始终在执行,gradle,Gradle,我有以下任务 task antlr4(type: JavaExec) { main = "org.antlr.v4.Tool" args = project.getAntlrArgs() classpath = configurations.compile } classes { it.dependsOn([antlr4]) } antlr4任务必须在编译java之前执行,因为antlr4会生成一些java文件 问题是每次执行任何任务时(例如运行clean任

我有以下任务

task antlr4(type: JavaExec) {
    main = "org.antlr.v4.Tool"
    args = project.getAntlrArgs()
    classpath =  configurations.compile
}

classes {
    it.dependsOn([antlr4])
}
antlr4任务必须在编译java之前执行,因为antlr4会生成一些java文件

问题是每次执行任何任务时(例如运行
clean
任务时),它都会执行,我希望它只在编译java文件之前执行


我做错了什么?如何修复它?

您发布的代码片段不会导致总是执行
antlr4
。问题一定在构建脚本的其他地方。如果Java编译需要由
antlr4
任务生成的文件,则必须执行
compileJava.dependsOn(antl4)
,而不是
classes.dependsOn(antlr4)
。或者,按照您的语法,
compileJava{dependsOn(antlr4)}
(您可以省略
它。
[]
)。

请不要通过在此处和此处重复发布来生成不必要的工作。@PeterNiederwieser,谢谢您的建议,我不会这样做。不过,我无法删除这个问题。