«1. Обзор

В этом коротком руководстве мы рассмотрим, как использовать переменные, определенные в файле pom.xml Maven, из приложения Java.

2. Настройка плагина

В этом примере мы будем использовать плагин Maven Properties.

Этот плагин привяжется к фазе генерации ресурсов и создаст файл, содержащий переменные, определенные в нашем pom.xml во время компиляции. Затем мы можем прочитать этот файл во время выполнения, чтобы получить значения.

Давайте начнем с включения плагина в наш проект:

<plugin>
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0.0</version> 
    <executions> 
        <execution> 
            <phase>generate-resources</phase> 
            <goals> 
                <goal>write-project-properties</goal> 
            </goals> 
            <configuration> 
                <outputFile>${project.build.outputDirectory}/properties-from-pom.properties</outputFile> 
            </configuration> 
        </execution> 
    </executions> 
</plugin>

Далее мы продолжим, предоставив значение нашей переменной. Кроме того, поскольку мы определяем их внутри pom.xml, мы также можем использовать заполнители Maven:

<properties> 
    <name>${project.name}</name> 
    <my.awesome.property>property-from-pom</my.awesome.property> 
</properties>

3. Чтение свойств

Теперь пришло время получить доступ к нашему свойству из конфигурации. Давайте создадим простой служебный класс для чтения свойств из файла в пути к классам:

public class PropertiesReader {
    private Properties properties;

    public PropertiesReader(String propertyFileName) throws IOException {
        InputStream is = getClass().getClassLoader()
            .getResourceAsStream(propertyFileName);
        this.properties = new Properties();
        this.properties.load(is);
    }

    public String getProperty(String propertyName) {
        return this.properties.getProperty(propertyName);
    }
}

Затем мы просто напишем небольшой тестовый пример, который считывает наши значения:

PropertiesReader reader = new PropertiesReader("properties-from-pom.properties"); 
String property = reader.getProperty("my.awesome.property");
Assert.assertEquals("property-from-pom", property);

4. Заключение

В В этой статье мы прошли процесс чтения значений, определенных в pom.xml, с помощью подключаемого модуля свойств Maven.

Как всегда, весь код доступен на GitHub.