JavaExec任务始终在执行

时间:2013-05-28 06:27:52

标签: 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任务时),我希望它只在编译java文件之前执行。

我做错了什么?我该如何解决?

1 个答案:

答案 0 :(得分:1)

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