2016-06-29 13 views
3

zugreifen Ich habe etwas Erfahrung mit Java und ich bin neu zu grandle und ich trat einem Projekt bei, in dem ich die Gradle-Datei ändern muss.Wie gradle Parameter in Java-Code

Hier ist meine build.gradle Datei

apply plugin: 'java' 
apply plugin: 'idea' 

sourceCompatibility = 1.5 
version = '1.0' 
dependencies { 
    testCompile 'org.testng:testng:6.9.10', 
       'org.seleniumhq.selenium:selenium-java:2.53.0' 
} 

test { 
    useTestNG() 
    testLogging.showStandardStreams = true 
} 

ich dann meine Testsuite laufen mit dem folgenden Befehl aus dem Mac-Terminal ./build test

Ich möchte einen Parameter environment basierend auf diesem Wert benannt geben von diesen Parameter muss ich meine URLs konfigurieren und Tests für diese Umgebung ausführen. So etwas wie ./build test environment=dev oder ./build test environment=qa

Und in meinem Java-Code würde ich tun, so etwas wie diese

if(env == 'dev') { 
    url = "my dev url"; 
    user = "my dev user name" 
} else if(env == 'qa') { 
    url = "my qa url"; 
    user = "my qa user name" 
} 

Wie kann ich diesen Parameter im Terminal passieren? Ein kleiner Ausschnitt davon, wie ich diesen Parameter in meinem Code verwenden kann, wäre eine große Hilfe (mein Java-Code hat keine Hauptmethode).

Hinweis: Ich habe bereits eine Eigenschaftendatei verwendet und dieses Verhalten erreicht, aber mein Team möchte keine Codeänderungen vornehmen, um die Umgebung festzulegen. Also musste ich diese Änderungen verwerfen.

Antwort

10

Von der Befehlszeile bis zur Großschrift können Sie Systemeigenschaften oder Projekteigenschaften verwenden. Es wird entweder:

./gradlew test -Denv=dev 

oder

./gradle test -Penv=dev 

Die Eigenschaften können oben jetzt in einem build.gradle gelesen werden können, müssen auch sie zu Tests bestehen, muss sie so mit Systemeigenschaften durchgeführt werden:

test { 
    systemProperty 'env', System.properties['env'] ?: 'dev' 
} 

für Systemeigenschaften von der Befehlszeile oder:

test { 
    systemProperty 'env', project.hasProperty('env') ? project.env : 'dev' 
} 

In Testklassen verwenden nur:

System.getProperty("env") 

den Wert, den Sie benötigen.

+1

Danke für die einfache Erklärung !!! –

+0

@God_Father, gern geschehen. – Opal