Профиль Maven считывает данные из файла свойств

У меня есть проект Selenium, который использует Maven в качестве инструмента сборки, и я хочу прочитать различные детали среды (протокол, домен, поддомен и т. Д.) Из файла .properties. Можно ли использовать профили Maven для запуска моих тестов в различных средах, таких как dev, staging, prod, на основе профиля, который я указываю при запуске команды mvn?

dev.properties:

protocol=http
domain=domain.com
subdomain=www

pom.xml:

  <profiles>
    <profile>
      <id>prod</id>
      <activation>
       <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>pre_prod</id>
    </profile>
    <profile>
      <id>dev</id>
    </profile>
  </profiles>

mvn:

mvn clean test -Pdev

Затем данные должны быть получены в java-коде с помощью

System.getProperty("protocol");
System.getProperty("domain");
System.getProperty("subdomain");

Любая помощь будет очень высоко ценится.

Спасибо!


person Lucian Radu    schedule 03.11.2017    source источник


Ответы (1)


Если вы просто хотите читать разные файлы свойств на основе аргумента командной строки, не могли бы вы просто передать строку, например -Denv = dev

Затем в вашем классе чтения свойств пусть он инициализирует файл свойств на основе System.getProperty ("env");

Properties generalProperties = new Properties();
    String generalPropertiesFileName = "data/"+ 
      System.getProperty("env") + ".properties";
   initProperties(generalProperties, generalPropertiesFileName);

В качестве альтернативы вы также можете передать свойства из командной строки в свой POM таким же образом -

<properties>
  <property>
    <protocol></protocol>
    <domain></domain>
    <subdomain></subdomain>
  <property>
<properties>

И затем их можно передать из командной строки как -Dprotocol = foo и т. Д.

Надеюсь, это поможет?

person JackForman    schedule 03.11.2017
comment
Привет, @JackForman, большое спасибо за ответ на этот вопрос. Определение ‹properties› непосредственно в файле pom.xml для управления средами не совсем подходящее решение моей проблемы, потому что проекту придется иметь дело с тестированием как минимум 10 веб-сайтов, каждый со своим собственным разработчиком, постановкой и продуктом. конфиги. Таким образом, файл pom станет довольно беспорядочным, так как в него будет добавлено много данных. В конце концов, моя последняя задача maven должна выглядеть так: mvn clean test -Dbrand=ebay -Pdev, где бренд будет одним из тестируемых веб-сайтов. - person Lucian Radu; 03.11.2017
comment
Хорошо, первое решение с файлами реквизита, принимающими аргумент командной строки, может с этим работать? Однако, вероятно, есть что-то умное, что вы можете сделать с профилями, о которых я не знаю - person JackForman; 03.11.2017
comment
Только что завершили реализацию первого предложенного вами решения, отлично работает! Еще раз спасибо! - person Lucian Radu; 03.11.2017