2016-03-29 5 views
0

Ich muss eine Variable als Teil einer Zeichenfolge verwenden, die verwendet wird, um eine andere Variable in einem gstring zu adressieren.
In Syntesys, was ich möchte ist tun: ${${it}_checkout}GString innerhalb eines Gstring in Gradle/Groovy

Die ganze Codezeile wäre:
def checkouts = repos.collect{"${it} = ${${it}_checkout} "}

Mit repos eine Liste von Endlagern zur Kasse zu sein.
Jedes Repo hat eine Eigenschaft namens <repo>_checkout.

Zum Beispiel, wenn ich zwei repos haben, genannt foo und bar, werde ich zwei Variablen namens foo_checkout und bar_checkout, enthält die Zweige checkouted werden.
Ich versuche, die folgende Zeichenfolge zu erstellen: "foo = $ foo_checkout bar = $ bar_checkout".
Das wird übersetzt in "foo = master bar = dev"

Gibt es einen Weg?

Antwort

1

Yeh, gerade tun:

def checkouts = repos.collect{ "$it = ${it}_checkout" } 

Oder, je nachdem, wie Sie Ihre Eigenschaften deklarieren, können Sie tun:

root_checkout = 'woo' 
repo_checkout = 'yay' 

['root', 'repo'].collect { r -> "$r = ${getProperty(r + '_checkout')}" } 
+0

Die Sache ist, dass ich den Wert der Variablen müssen das wäre genannt $ {it} _checkout. Zum Beispiel, wenn ich einen Repo namens 'foo' habe, werde ich eine Variable namens' foo_checkout' haben, die den Zweig zum Checkout enthält. Ich werde die Frage aktualisieren, um Verwirrung zu vermeiden –

+1

@PedroWitzel Aktualisierte Antwort, hoffe es ist näher? –

Verwandte Themen