2017-03-27 19 views
0

jenkinsからmavenプロジェクトにパラメータを渡す方法を学びたいと思います。 まず私ジェンキンスで一般的な設定を選択し、 "このプロジェクトは、パラメータ化されている" をクリックしjenkinsからmavenプロジェクトにパラメータを渡す方法

名=> my_parameter

の選択肢=>デスクトップ、 のiPad、 タブレット

その後、ソース管理=> gitの私はgit repoのリンクを書いたリポジトリ、それはOKだった。

最終ステップビルド=>実行シェル=>コマンド=> MVNテスト-DdeviceType = $ my_parameter

私のMavenプロジェクトは、パラメータの名前の文字列装置を備えています。

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); 
    } 

その後ジェンキンス上のパラメータで構築

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

なぜデバイスタイプリターンヌルしていますか?どうしましたか? あなたのお手伝いをしてくれてありがとう...

答えて

0

少なくとも、のコマンドラインパラメータ "-D"は、 "環境変数"ではなく "システムプロパティ"を設定します。 "System.getenv()"の代わりに "System.getProperty()"と呼んでください。

+0

私はdevice = System.getProperty( "deviceType");を試しました。 System.out.println( "デバイスタイプ:" +デバイス); 違いはありません。デバイスタイプはヌルを返す –

+0

これは、mvnに提供されたシステムのpropsが、確実なベースの単体テストで利用可能なシステムプロパティに変換されないためです。それでもシステムプロパティを使用したい場合は(このためにはenv varsが望ましい)、確実にシステムを設定する方法については、http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.htmlを参照してください。プロパティ。 –

0

私は最終的に試して答えを見つけました。しかし、私はそれが解決のための最善の方法であるかどうかは確かではありません。

BUİLD => invoke top-level maven targets. 
Goals => test 

しかし、重要な問題は、ジェンキンスのパラメータ名はあなたのmavenのプロジェクトの変数名と同じ名前でなければならないということです。

device=System.getenv("deviceType"); 

次に、ジェンキンズのパラメータを使ってビルドします。

関連する問題