Не удалось продлить задачу Gradle - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в 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 голосов
/ 21 ноября 2018

Ваше предположение о поиске задачи processPlayBinaryPlayResources основано на том, что плагин Java автоматически добавляет задачу processResources для всего источника, установленного как process<sourceset_name>Resources.Это происходит только тогда, когда исходный набор добавляется с помощью метода 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.

...