Перейти к основному содержимому

Доступ к свойствам Maven в Java

· 2 мин. чтения

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 .