My Gradle构建使用JavaExec从ANTLR语法生成Java源文件。当使用Gradle 1.3时,似乎工作正常,在应该生成Java时,并在应该的时候显示UP-TO-DATE。我升级到Gradle 1.10,现在任务总是显示UP-TO-DATE,即使在干净(删除生成的Java文件)之后也是如此。
我的build.gradle包含以下内容:
project.ext.grammarpackage = project.group
project.ext.genAntlrDir = "$buildDir/generated-sources/antlr"
task antlrOutputDir << {
mkdir(project.ext.genAntlrDir)
}
task generateGrammarSource(dependsOn: antlrOutputDir, type: JavaExec) {
description = 'Generates Java sources from Antlr4 grammars.'
def antlrSource = 'src/main/antlr'
inputs.dir file(antlrSource)
outputs.dir file(project.ext.genAntlrDir)
def grammars = fileTree(antlrSource).include('**/*.g4')
main = 'org.antlr.v4.Tool'
classpath = configurations.antlr4
args = ["-visitor", "-o", "${project.ext.genAntlrDir}/${project.ext.grammarpackage}", grammars.files].flatten()
}
compileJava {
dependsOn generateGrammarSource
source project.ext.genAntlrDir
}
任何人都可以看到我应该做的不同吗?升级到Gradle 1.10后,我运行了clean
。我知道我可以使用generateGrammarSource
选项运行--rerun-tasks
任务,但不要强制它一直运行,只要它不是最新的。