Groovy:在这些情况下如何替换leftShift运算符?

时间:2018-04-02 14:26:17

标签: groovy deprecated

我在build.gradle

中接下来要调用一个插件
apply plugin: 'com.company.gradleplugins.plugin'

当我编译时,Jenkins警告我Gradle 5.0及其弃用:

  

不推荐使用Task.leftShift(Closure)方法   计划在Gradle 5.0中删除。请使用Task.doLast(动作)   代替。

     

at build_c4218hywg.run(/Users/user/Documents/project/projectfolder/app/build.gradle:12)

标准替换是明确的(使用doLast代替<<),但我发现了一些我不知道如何更新的操作(整个项目不仅仅是我的)。 / p>

所以,在插件中,我有一些:

configJSON = mainProperties.getConfig() << buildProperties.getConfig()

imageNames << image.getFileName()

for (int i = 0; i < m.groupCount(); i++) {
    list << m[i][1]
}

等等。目前这样做的方法是什么?

2 个答案:

答案 0 :(得分:1)

Task.leftShift(Closure) - 这是来自Gradle lib的Task类的leftShift()。

imageNames << image.getFileName() - 这是Collection类的leftShift(),它是Groovy语言的一部分。

如果您要检查 org.codehaus.groovy.runtime.DefaultGroovyMethods ,您会看到:

imageNames << image.getFileName()

是相同的

imageNames.add(image.getFileName())

答案 1 :(得分:1)

好的,最后我在插件项目中找到了这一行。

有下一个代码块:

if(it.hasProperty("android")) { 
    project.task('mainTask') << {
        ...
    }
}

所以解决方案是:

if(it.hasProperty("android")) {
    project.task('mainTask') {
        doLast {
            ...
        }
    }
}

我的错。