2016-10-17 70 views

回答

3

我想任务应该是这样的:

编辑:根据本commentgradle/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() 
} 
+0

这看起来像它应该工作,但我得到一个错误。我认为这可能是一个错误。记录在这里:https://discuss.gradle.org/t/in-gradle-script-kotlin-tasks-getbyname-with-closure-errors-with-value-is-null/20065/1 –

+0

请检查是否我的更新适合你 – IRus

+0

这似乎工作。非常感谢。 –

3

随着在科特林DSL和摇篮的较新版本更新的API,您可以这样做:

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) 
    } 
} 
0

为什么不只是使用“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) 
    } 
} 
相关问题