Intereting Posts
Плагин android studio с id: 'kotlin-android-extensions' Реализация пространства настойчивости в Котлине Как я могу сфотографировать свой sdk, закодированный с kotlin (и избавиться от метаданных) Можно ли выразить kotlin 'с' эквивалентом метода в Scala? Вызов Kotlin из Java – ошибка: демо-версия пакета не существует Как вернуть несколько значений из функции в Котлине, как мы делаем это быстро? Как отображать данные в RecyclerView с помощью API Retrofit2? Smartcast невозможно, потому что у владельца есть открытый или пользовательский getter Почему не будет код, который инициализирует свойство интерфейса переменной в компиляции блока init? Тема и стиль Анко Генераторы Котлина, ожидающие неожиданного типа Как поместить файлы res из проекта в банку в одной папке? Как конвертировать этот код из iOS swift в Android Kotlin Как преобразовать массив String в массив Int в Kotlin? Преобразование Double в ByteArray или Array <Byte> Kotlin

Как настроить задачу processResources в сборке Gradle Kotlin

У меня есть следующий скрипт сборки на основе Groovy. Как мне сделать то же самое в сценарии на основе kotlin?

processResources { filesMatching('application.properties'){ expand(project.properties) } } 

Я думаю, что задача должна выглядеть так:

Изменить : согласно этому комментарию в репозитории gradle / kotlin-dsl . Конфигурация задачи должна работать следующим образом:

 import org.gradle.language.jvm.tasks.ProcessResources apply { plugin("java") } (tasks.getByName("processResources") as ProcessResources).apply { filesMatching("application.properties") { expand(project.properties) } } 

Это довольно уродливо. Поэтому я предлагаю следующую функцию полезности для этой цели, пока один из вышеперечисленных потоков не будет выполнен:

 configure<ProcessResources>("processResources") { filesMatching("application.properties") { expand(project.properties) } } inline fun <reified C> Project.configure(name: String, configuration: C.() -> Unit) { (this.tasks.getByName(name) as C).configuration() } 

С обновлением API в новой версии Kotlin DSL и Gradle вы можете сделать что-то вроде:

 import org.gradle.language.jvm.tasks.ProcessResources plugins { java } tasks { "processResources"(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } } } 

А также:

 val processResources by tasks.getting(ProcessResources::class) { filesMatching("application.properties") { expand(project.properties) } } 

Почему бы просто не использовать «withType»? Я имею в виду (ИМХО)

 tasks { withType<ProcessResources> { .. } 

выглядит намного лучше, чем

 tasks { "processResources"(ProcessResources::class) { .. } 

Так,

 tasks.withType<ProcessResources> { //from("${project.projectDir}src/main/resources") //into("${project.buildDir}/whatever/") filesMatching("*.cfg") { expand(project.properties) } }