如何在Jenkins中使用build参数编辑app.properties文件

时间:2019-04-18 08:50:22

标签: java maven selenium jenkins testng

我有一个要从Jenkins运行的硒脚本。我有一个名为app.properties的属性文件。该文件包含以下属性:

browser=chrome

我将项目配置为参数化,因此在运行构建时,它会要求提供浏览器参数。我想选择此参数(例如firefox),以便它将更改app.properties中的浏览器属性并在Firefox中运行自动化。

通常,当我在Intellij的app.properties中更改浏览器属性时,我的程序将与该浏览器一起运行。因此,从这个意义上讲,我的程序没有任何问题。

是否可以根据我的Jenkins构建参数更改app.properties并以该配置运行程序?

编辑:我找到了以下解决方案:

  1. 安装surefire插件。
  2. 添加浏览器参数。
  3. 在您的属性管理类中,将浏览器参数设为

    System.getProperty(“浏览器”);

  4. 在jenkins中,配置浏览器参数

  5. 调用maven命令:mvn test“ -Dbrowser = $ {BROWSER}”

2 个答案:

答案 0 :(得分:1)

您可以传递系统属性来更改配置。 首先,您应该将项目配置为同时读取系统属性和配置文件,其中系统属性将具有更高的优先级。我建议使用Apache Commons Composite Configuration。看起来可能像这样:

CompositeConfiguration configuration = new CompositeConfiguration();
try {
  configuration.addConfiguration(new SystemConfiguration());
  configuration.addConfiguration(new PropertiesConfiguration("app.properties"));
} catch (ConfigurationException e) {
  e.printStackTrace();
}
//Read your configuration values here

这样,当您提供系统属性 -Dbrowser = chrome 时,它将覆盖配置文件中的值。

第二,您需要配置Jenkins作业。由于您要传递参数,因此可以在构建步骤定义中使用它:

mvn clean test -Dbroswer=${browser-param}

答案 1 :(得分:0)

“根据您选择的参数类型,参数生效的方式也有所不同...字符串参数作为具有相同名称的环境变量公开。” https://wiki.jenkins.io/plugins/servlet/mobile?contentId=34930782#content/view/34930782