从Gradle 1.3升级到1.10后,任务始终是最新的
我的Gradle构建使用JavaExec从ANTLR语法生成Java源文件。当使用Gradle1.3时,它似乎可以正常工作,在应该的时候生成Java,并在应该的时候显示最新信息。我升级到了Gradle 1.10,现在任务总是显示最新的,即使在清除(删除生成的Java文件)之后也是如此 My build.gradle包含以下内容:从Gradle 1.3升级到1.10后,任务始终是最新的,gradle,Gradle,我的Gradle构建使用JavaExec从ANTLR语法生成Java源文件。当使用Gradle1.3时,它似乎可以正常工作,在应该的时候生成Java,并在应该的时候显示最新信息。我升级到了Gradle 1.10,现在任务总是显示最新的,即使在清除(删除生成的Java文件)之后也是如此 My build.gradle包含以下内容: project.ext.grammarpackage = project.group project.ext.genAntlrDir = "$buildDir/gene
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
}
project.ext.grammarpackage=project.group
project.ext.genAntlrDir=“$buildDir/generated sources/antlr”
任务antlrOutputDir从远处很难说。您确定任务首先会产生正确的输出吗?同时尝试删除(或重命名)~/.gradle
和$projectDir/.gradle
。PS:项目。
可以在构建脚本中省略。更重要的是,ext.
只应在定义额外属性时使用,而不能在之后使用。应该使用project.ext.genAntlrDir
,genAntlrDir
或project.genAntlrDir
而不是project.ext.genAntlrDir
。不需要任务antlrOutputDir
,因为输出目录(如generateGrammarSource
中声明的)是自动创建的。谢谢,彼得!删除$projectDir/.gradle
文件并允许gradle重新创建它就成功了。我还将进行您建议的其他更改。如果你将你的评论复制到一个答案中,我将接受它。