Übergeben von Eigenschaften an einen Gradle-Build

9

Ich gebe zu, ich bin noch ziemlich neu, aber ich hatte nicht erwartet, etwas so Einfaches wie das folgende Beispiel nicht verstehen zu können. Ich kann die grddle Dokumentation über das Überprüfen lesen, ob eine Projekteigenschaft gesetzt worden ist oder nicht, einen hasProperty (Schnur propertyName) Anruf verwendend und ich sitze hier und habe keine Idee, warum etwas so grundlegendes nicht funktioniert.

Ich glaube, mein Geist muss so sehr "ant-like" orientiert sein, dass ich sicher etwas Grundlegendes verpasse.

%Vor%

und Aufruf dieser Aufgabe mit dem folgenden Befehl:

%Vor%

Meine Fragen wären also:

  1. Warum das System ausgedruckt wird, aber hasProperty gibt null ?
  2. zurück
  3. Wie sollte ich nach der Existenz der Projekteigenschaft namens "system" suchen?
  4. Gibt es eine andere Möglichkeit, eine Projekteigenschaft als eine Systemeigenschaft zu testen?
  5. Wie würden Sie eine Systemeigenschaft von der Befehlszeile aus übergeben?

Dies ist von der Großbuch-Dokumentation und ich glaube, ich lese es richtig

19.2.1. Nach Projekteigenschaften suchen

Sie können auf eine Projekteigenschaft in Ihrem Buildskript zugreifen, indem Sie einfach ihren Namen verwenden, wie Sie eine Variable verwenden würden. Wenn diese Eigenschaft nicht vorhanden ist, wird eine Ausnahme ausgelöst und der Build schlägt fehl. Wenn Ihr Build-Skript auf optionalen Eigenschaften basiert, die der Benutzer möglicherweise festgelegt hat, müssen Sie möglicherweise in einer Datei "gradle.properties" prüfen, ob es existiert, bevor Sie darauf zugreifen. Sie können dies tun, indem Sie die Methode hasProperty ('propertyName') verwenden, die true oder false zurückgibt.

    
Julian 26.06.2015, 04:54
quelle

1 Antwort

12

Sie müssen hasProperty explizit auf der Instanz project aufrufen - ohne sie wird hasProperty in einem lokalen Kontext aufgerufen. Das folgende Beispiel funktioniert:

%Vor%
  1. Da nicht vorhandene Eigenschaften ( system ist nicht im Skript definiert) werden aus der project -Instanz genommen. Wenn Sie die Eigenschaft system nicht übergeben, wird eine Ausnahme für println .
  2. ausgelöst
  3. project.hasProperty('propName')
  4. Ich bin mir nicht sicher, ob ich das richtig verstanden habe, aber Sie können über die project Instanz und Systemeigenschaften über die Klasse System auf Projekteigenschaften zugreifen.
  5. Verwendung von -D switch - gradle -Dprop=value
Opal 26.06.2015, 06:49
quelle

Tags und Links