无法扩展Gradle任务

时间:2018-11-19 22:35:06

标签: gradle playback

我是Gradle的新手(我们将从SBT切换到其他应用程序),并用它来构建使用Play Framework开发的应用。

在Gradle处理资源之前,我需要对资源进行一些过滤(我想将一些构建属性注入配置中,以使它们可从代码中使用)。

我设法“扩展”了java processResources任务,但是由于某种原因,我无法对play processPlayBinaryPlayResources进行同样的操作。

processPlayBinaryPlayResources {
    filter ReplaceTokens, tokens: [
            "applicationVersion": version
    ]
}

即使这不起作用:

def playVersion = "2.6.20"
def scalaVersion = "2.12"
def javaVersion = "1.8"

apply plugin: "java"
apply plugin: "idea"
apply plugin: "play"

model {
    components {
        play {
            platform play: playVersion, scala: scalaVersion, java: javaVersion
            injectedRoutesGenerator = true
        }
    }
}

processPlayBinaryPlayResources {
    doLast {
        println("ok")
    }
}

dependencies {
    compile "io.vavr:vavr:0.9.2"
    compile "org.imgscalr:imgscalr-lib:4.2"
    compile "com.typesafe.play:play-guice_${scalaVersion}:2.6.20"
    compile "com.typesafe.akka:akka-http_${scalaVersion}:10.1.5"
    compile "com.typesafe.play:filters-helpers_${scalaVersion}:2.6.20"
    compile "ch.qos.logback:logback-classic:1.2.3"
}

它产生:

> Could not find method processPlayBinaryPlayResources() for arguments [build_6grwx7eowye82rdqpu4qlinur$_run_closure2@582d9dbd] on root project 'myproject' of type org.gradle.api.Project.

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您假设找到任务processPlayBinaryPlayResources的依据是,java插件会自动为所有设置为process<sourceset_name>Resources的源添加一个processResources任务。仅当使用java pugins sourceSets方法添加了源集时才发生这种情况,在这种情况下PlayBinaryPlay不是这样。 play插件使用其自己的DSL来配置源集。  因此,当您尝试扩展processPlayBinaryPlayResources时不会发生这种情况,因为首先没有该名称的此类任务存在,因此在将其委托给Project时,您会得到

 Could not find method processPlayBinaryPlayResources() for arguments [build_6grwx7eowye82rdqpu4qlinur$_run_closure2@582d9dbd] on root project 'myproject' of type org.gradle.api.Project.

最后,我想补充一下,processPlayBinaryPlayResources任务不是由play插件添加的。