Профили с URL-адресом среды в Maven

Это часть моего pom.xml с двумя профилями, которые содержат URL-адреса для разных сред:

<profiles>
<profile>
    <id>test</id>
    <properties>
        <environment>yyy</environment>
    </properties>
</profile>
<profile>
    <id>uat</id>
    <properties>
        <environment>xxx</environment>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

также у меня есть evironment.properties файл в src/main/java/resources с телом:

environment=${environment}

Я запускаю программу с mvn clean test -Ptest Теперь, как я могу получить доступ к значению из моего профиля maven? Я создаю класс читателя:

    package utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Reader {

    public void readProperties() {

        Reader app = new Reader();
        Properties prop = app.loadPropertiesFile("src\\test\\resources\\properties\\environment.properties");
        prop.forEach((k, v) -> System.out.println(k + ":" + v));

    }

    public Properties loadPropertiesFile(String filePath) {

        Properties prop = new Properties();

        try (InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(filePath)) {
            prop.load(resourceAsStream);
        } catch (IOException e) {
            System.err.println("Unable to load properties file : " + filePath);
        }

        return prop;

    }
}

но если я запускаю функцию чтения в своем тесте, она дает мне NullPointer по адресу:

Reader objReader = new Reader();
objReader.readProperties();

Как я могу получить доступ к своему URL-адресу, указанному в профилях?

Вероятно, вам нужно настроить плагин surefire, чтобы предоставить вам необходимые свойства в качестве системных свойств.

J Fabian Meier 05.07.2019 16:41

Вы вызываете readProperties, который использует каталог, которого нет на ресурсе. Местоположение должно быть /environment.properties, потому что во время сборки ресурсы src/test/resources будут скопированы в target/test-classes/, который является путем к классам для тестов.

khmarbaise 05.07.2019 19:02
Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
2
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны указать следующее в You пом.xml :

Раздел сборки:

   <build>
        <resources>

            <resource>
                <directory>src/main/resources/${custom.resource}</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

....

<profiles>
    <profile>
        <id>cloud</id>
        <properties>
            <custom.resource>devnew</custom.resource>
        </properties>
    </profile>

...

Сама конфигурация разработчик может выглядеть так: https://i.imgur.com/gHR5BTk.png

baseUrl=abracadabra....

И ваш загрузчик пропов будет выглядеть:

public void environmentPropertiesLoader() throws IOException {
    Properties prop = new Properties();
    String propFileName = "custom.resource";
    InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);
    if (inputStream == null) {
        throw new FileNotFoundException("Property File '" + propFileName + "' not found in the classpath");
    }
    prop.load(inputStream);
    baseUrl = prop.getProperty("baseUrl");

    inputStream.close();

}

Ваша правильная команда с профилем будет выглядеть так:

mvn clean test "-Pdevnew"

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

Также рекомендуем статья, описывающая, как настроить проект maven с нуля.

С наилучшими пожеланиями, Юджин

Другие вопросы по теме