Профили с URL среды в Maven - PullRequest
1 голос
/ 05 июля 2019

Это часть моего 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, указанному в профилях?

1 Ответ

0 голосов
/ 05 июля 2019

Вы должны поместить в Вас следующее pom.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>

...

devnew сама конфигурация может выглядеть следующим образом: 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 проект с нуля .

С наилучшими пожеланиями, Евгений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...