2017-03-27 3 views
0

Ich möchte lernen, wie Parameter zu Maven-Projekt von Jenkins übergeben. Zunächst wählte i Allgemeine Konfiguration in Jenkins und klickenWie übergeben Parameter an Maven-Projekt von Jenkins

Name => my_parameter

Choices dann "Dieses Projekt parametriert" => Desktop, ipad, Tablette

Dann Quellenverwaltung => git Repositories Ich schrieb Git Repo Link, es war in Ordnung.

Last Step Erstellen => Ausführen Shell => Command => MVN Test -DdeviceType = $ my_parameter

Mein Maven-Projekt hat einen Parameter namens String-Gerät.

String device; 

public static DesiredCapabilities caps=null; 


@BeforeSuite 
public void initializeDriver() throws MalformedURLException{ 
    device=System.getenv("deviceType"); 
    System.out.println("device type: "+ device); 

    if (device.contains("ipad")) { 
     caps = new DesiredCapabilities(); 
     caps.setCapability("browserName", "iPad"); 
     caps.setCapability("platform", "MAC"); 
     caps.setCapability("device", "iPad Mini 4"); 
     caps.setCapability("browserstack.local", "true"); 
     caps.setCapability("browserstack.debug", "true"); 
     caps.setCapability("safariAllowPopups", "true"); 
     caps.setCapability("acceptSslCerts", "true"); 
     caps.setCapability("browserstack.autoWait", "0"); 
     caps.setCapability("requireWindowFocus", "true"); 

     driver=new RemoteWebDriver(new URL(URL), caps); 
    } 

Dann mit Parametern auf jenkins bauen

$ /bin/sh -xe /var/folders/j9/gyf9715j0hs32m4gd8h_gw4m55zss4 /T/hudson7304038831620598368.sh 
+ mvn test -DdeviceType=desktop 
[INFO] Scanning for projects... 
device type: null[0m 

Warum Gerätetyp return null? Was ist los mit dir? Danke für Ihre Hilfe ...

Antwort

0

Nun, die "-D" command-line-Parameter zu "mvn" setzt "Systemeigenschaften", nicht "Umgebungsvariablen". Rufen Sie statt "System.getenv()" "System.getProperty()" an.

+0

Ich habe versucht, Gerät = System.getProperty ("deviceType"); System.out.println ("Gerätetyp:" + Gerät); Es gibt keinen Unterschied. Der Einheitentyp gibt null zurück –

+0

Dies liegt daran, dass Systemrequisiten, die für mvn bereitgestellt werden, nicht in Systemeigenschaften umgesetzt werden, die für todsichere Einheitstests verfügbar sind. Wenn Sie weiterhin Systemeigenschaften verwenden möchten (vorzugsweise für env vars), schauen Sie unter http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html nach, wie Sie das todsichere System einstellen können Eigenschaften. –

0

Ich fand schließlich die Antwort, indem ich versuchte. Aber ich bin mir nicht sicher, ob das der beste Weg zur Lösung ist. ich wählte

Aber wichtiges Problem ist Parametername in Jenkins muss der gleiche Name Ihr Mavenprojekte variabler Name sein.

device=System.getenv("deviceType"); 

Dann bauen mit Parametern auf jenkins es funktioniert!

Verwandte Themen