我想学习如何从jenkins将参数传递给maven项目。 首先,我在Jenkins中选择了General Configuration,然后单击“This project is parameterized”,然后单击
姓名=> my_parameter
选择=>桌面, ipad公司, 片剂
然后,Source Management => git repositories我写了git repo链接,没关系。
Last Step Build =>执行Shell => Command => mvn test -DdeviceType = $ my_parameter
我的maven Project有一个名为String device的参数。
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);
}
然后使用jenkins上的参数构建
$ /bin/sh -xe /var/folders/j9/gyf9715j0hs32m4gd8h_gw4m55zss4 /T/hudson7304038831620598368.sh
+ mvn test -DdeviceType=desktop
[INFO] Scanning for projects...
device type: null[0m
为什么设备类型返回null?怎么了? 谢谢你的帮助...
答案 0 :(得分:0)
嗯,至少," -D
"命令行参数为" mvn
"设置"系统属性",而不是"环境变量"。不要拨打" System.getenv()
",而是拨打" System.getProperty()
"。
答案 1 :(得分:0)
我终于通过尝试找到了答案。但我不确定这是否是解决方案的最佳方式。我选择了
BUİLD => invoke top-level maven targets.
Goals => test
但重要的问题是Jenkins中的参数名必须与你的maven项目变量名相同。
device=System.getenv("deviceType");
然后在jenkins上使用参数构建它可以工作!
答案 2 :(得分:0)
对于试图将变量从Jenkins管道传递到本地pom.xml文件的人,您可以做的是通过mvn clean install console命令传递参数。
在您的POM.xml中
<properties>
<maven.test.skip>false</maven.test.skip>
</properties>
使用此变量设置插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>${maven.test.skip}</skipTests>
<skip>${maven.test.skip}</skip>
</configuration>
</plugin>
现在,我们将设置詹金斯方面的东西:
我在这里所做的是创建一个布尔构建参数值SKIP_JUNIT_TEST,该值可以控制通过参数传递的值。
创建构建参数后,可以在管道代码中像这样传递参数:
sh 'mvn clean install -Dmaven.test.skip=${SKIP_JUNIT_TEST}'
maven.test.skip是我在pom.xml中设置的变量