我有以下任务
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文件之前执行。
我做错了什么?我该如何解决?
答案 0 :(得分:1)
您发布的代码段不会导致antlr4
始终被执行。问题必须在构建脚本的其他位置。如果Java编译需要antlr4
任务生成的文件,则必须执行compileJava.dependsOn(antlr4)
,而不是classes.dependsOn(antlr4)
。或者,按照您的语法compileJava { dependsOn(antlr4) }
(您可以省略it.
和[]
)。