2017-07-02 110 views
0

我正在嘗試將大量參數傳遞給Gradle中的JavaExec任務。現在我正在做類似:自動將未解析的參數傳遞給Gradle中的JavaExec類型任務?

task foo(type: JavaExec) { 
    if (project.hasProperty('prop1')) { 
    args += ["--prop1"] 
    } 

    if (project.hasProperty('foo2')) { 
    args += ["--foo3"] 
    } 

    ... 
    if (project.hasProperty('flagn')) { 
    args += ["--flagn"] 
    } 
} 

然後當我執行此操作時,我會執行類似./gradlew :foo -Pprop1 -Pfoo2 ... -Pflagn的操作。這工作,但真的很乏味,因爲我需要從Gradle傳遞相同的字符串參數到JVM。有沒有更簡單的方法 - 比如自動傳遞所有未解析的參數或更簡單的參數?

+0

是否所有的屬性都有一個共同的前綴/結構像你的例子? – ToYonos

+0

@ToYonos:不是真的 - 我可能應該編輯我的帖子來反映這一點。 :) – derekhh

+0

*自動傳遞所有未解析的參數*:你的程序是一個解析的參數是什麼?一個使用過的,一個閱讀一個或只是所有的屬性? – ToYonos

回答

1

您可以通過命令行通過StartParameter對象訪問項目屬性。

所以,你的榜樣,您可以使用:

task foo(type: JavaExec) { 
    args gradle.startParameter.projectProperties.keySet().collect { "--$it" } 
} 

然而,這將任何命令行項目屬性添加到JavaExec ARGS。也許你可以考慮使用特定的前綴來過濾屬性。

相關問題