Zuerst lässt analysieren die url
Eigenschaft Zugriff (in beiden Beispielen):
Ist es ein Methodenaufruf oder ein Aufruf des Property Setter ? Nun, es ist irgendwie beides. Lassen Sie uns zitieren Mr. Hakis blog:
Gradle eine Proxy-Klasse für die tatsächliche Klassenimplementierung schaffen und fügt hinzu (unter anderem) eine Eigenschaft Setter-Methode. Die Methode hat den Namen der Eigenschaft und hat ein einzelnes Argument desselben Typs wie die Eigenschaft. Es unterscheidet sich von den Methoden setProperty
und getProperty
, die bereits von Groovy hinzugefügt wurden.
Dies ist reiner syntaktischer Zucker, der das Gradle-Gefühl der Kombination von Konfiguration und Skripting unterstützt. Wenn Sie denken, dass es irreführend ist, verwenden Sie einfach den Zuweisungsoperator (der dank Setzt auch den Setter verwendet).
Nun, was ist mit dem maven
Teil?
Es sieht aus wie eine Eigenschaft von repositories
. Aber wenn wir uns die Definition seines Typs RepositoryHandler
ansehen, stellen wir fest, dass es sich um eine Methode handelt, die ein neues MavenArtifactRepository
erstellt, das entweder eine Schließung oder eine Aktion (für Java-Verwendung) zur Konfiguration akzeptiert.
Dies erklärt einfach das zweite Beispiel, als wir eine Schließung übergeben, die dann die url
-Eigenschaft konfiguriert. Groovy ermöglicht das Überspringen der Klammern.
Das erste Beispiel ist komplizierter. Wir verwenden immer noch dieselbe Methode, aber dieses Mal geben wir einen leeren Konfigurationsabschluss als Parameter an. Die Methode gibt immer noch eine neue MavenArtifactRepository
zurück und wir greifen auf ihre url
Eigenschaft zu.
Mögliches Duplikat von [Verwirrt mit der Verwendung von Zuweisung "=" und Klammern {}] (http://stackoverflow.com/questions/22759542/confused-with-the-use-of-assignment-and-brackets) –