Читайте свойства из POM в код Java - PullRequest
0 голосов
/ 28 марта 2012

Допустим, у меня есть два профиля maven для запуска веб-тестов проектов: 1. сначала развертывается на CI tomcat экземпляр с скажем http://ci.blahblah.com:8080 адресом, а затем запускаются тесты 2. второй профиль для разработчиков, которые могут развернуть встроенный tomcat с помощью tomcat: run. Таким образом, их адрес для веб-тестов будет выглядеть как http://localhost:8080

Теперь я создал оба профиля в файле pom и в каждом из них в разделе <properties> Я также создал свойство <base.url> с разными адресами для каждого профиля.

Есть ли способ, как я могу теперь прочитать эти значения в своем Java-классе, где я запускаю веб-тесты, используя Webdriver, чтобы я мог получить что-то вроде driver.get("address from pom <base.url>") ??

Он просто позволяет разработчикам запускать веб-тесты локально перед передачей своего кода.

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Вы можете использовать фильтрацию ресурсов maven . Например:

Сначала измените свой код, чтобы он извлекал адрес из файла свойств. Много способов сделать это (чтение файла свойств напрямую, с помощью spring propertyplaceholderconfigurer и т. Д.)

String address = getAddressFromPropertiesFileOrInjectedFromSpringOrWherever();
driver.get(address)

Затем создайте файл свойств, в котором будет храниться эта информация, скорее всего, в src / main / resources. Убедитесь, что значение вашего свойства использует то же имя, что и ваша переменная maven:

webAddres=${base.url}

Убедитесь, что в вашем профиле настроена фильтрация по ссылке выше.

0 голосов
/ 30 августа 2014

Вы также можете использовать Экологическую запись в своем web.xml и проанализировать ее в своем веб-приложении.

Пример:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <env-entry>
    <env-entry-name>projectStage</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>Development</env-entry-value>
  </env-entry>

  ...
</web-app>

Код веб-приложения

String projectStage = "";

try {
  Context context = new InitialContext();
  Context environment = (Context) context.lookup("java:comp/env");
  projectStage = (String) environment.lookup("projectStage");
} catch (NamingException ex) {
  //
}
0 голосов
/ 28 марта 2012

Если я правильно понимаю, попробуйте вызвать эту систему:

mvn org.apache.maven.plugins:maven-help-plugin:evaluate -Dexpression=base.url
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...