2017-07-30 97 views
2

我是Android開發人員。結果編寫由Gradle構建。我在Groovy上的Gradle DSL上編寫了許多任務。Gradle。 Kotlin - 是否可以創建動態(「飛行中」)任務?

有時我需要動態地創建Gradle任務(「即時」)。這裏的例子:

task installDebugFlavors() { 
    android.applicationVariants.all { v -> 
     if (v.name.endsWith('Debug')) { 
      String name = v.name.capitalize() 
      dependsOn "install$name" 
     } 
    } 
} 

這個任務產生具有所有風味組合的新任務。因爲結果Gradle腳本非常小,易於理解和易於支持。它非常強大的Groovy功能。它經常幫助我。

在新版本的Gradle中引入了新的語言--Kotlin。

我的問題是:是否可以在Kotlin上編寫相同的任務(用於動態創建其他任務)?

回答

0

是的,您可以動態地創建任務,並通過Gradle Kotlin DSL中的(String)名稱引用其他任務。

tasks { 
    "installDebugFlavors" { 
     android.applicationVariants.forEach { v -> 
      if (v.name.endsWith("Debug")) { 
       val name = v.name.capitalize() 
       dependsOn("install$name") 
      } 
     } 
    }   
} 
相關問題