Gradle抛出期待EOF的错误,发现'<<'。为什么?

时间:2016-05-03 18:42:57

标签: java gradle

我使用下面的代码来复制和过滤属性文件中的属性,它工作正常。有一个变量不是静态的,我需要作为参数传递,以便它可以在正确的文件上工作我正在使用-Penv = test或-Penv = at但是我收到了错误。

task createLocalProp(type:Copy) << {
    from "templates/local.properties.template"
    into ("$buildDir/properties")
    def myProps = new Properties()
    file("Properties/${env}/local_${env}.properties").withInputStream{
    myProps.load(it);
    }
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: myProps)
}

错误:

C:\GRADLE_WORK\XXXX-GRADLE>gradle -b build_localprop.gradle createLocalProp -Pen
v=test

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\GRADLE_WORK\XXX-GRADLE\build_localprop.gradle' line: 37

* What went wrong:
Could not compile build file 'C:\GRADLE_WORK\XXXX-GRADLE\build_localprop.gradle'
.
> startup failed:
  build file 'C:\GRADLE_WORK\XXX-GRADLE\build_localprop.gradle': 37: expecting
EOF, found '<<' @ line 37, column 33.
     task createLocalProp(type:Copy) << {
                                     ^

  1 error

2 个答案:

答案 0 :(得分:2)

我现在不确定编译器错误发生的原因,但是您不应该在执行阶段配置任务,而是在配置阶段配置。 <<语法是doLast的快捷方式,因此即使它编译它也可能无法正常工作。删除<<,可能一切正常。

答案 1 :(得分:0)

我遇到了类似的错误,报告我的gradle文件底部出错了。实际上,在进行差异合并冲突时,我错过了文件中间缺少的右括号。