Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/authentication/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Gradle 1.3升级到1.10后,任务始终是最新的_Gradle - Fatal编程技术网

从Gradle 1.3升级到1.10后,任务始终是最新的

从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

我的Gradle构建使用JavaExec从ANTLR语法生成Java源文件。当使用Gradle1.3时,它似乎可以正常工作,在应该的时候生成Java,并在应该的时候显示最新信息。我升级到了Gradle 1.10,现在任务总是显示最新的,即使在清除(删除生成的Java文件)之后也是如此

My 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
}
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重新创建它就成功了。我还将进行您建议的其他更改。如果你将你的评论复制到一个答案中,我将接受它。