0

我有以下任务

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 文件之前执行。

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

4

1 回答 1

1

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

于 2013-05-28T09:04:43.840 回答