Использование переменных окружения в POM.XML на Maven

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы обратиться к переменным окружения в файле pom.xml, используйте конструкцию ${env.ИМЯ_ПЕРЕМЕННОЙ}. Например, для использования переменной окружения JAVA_HOME добавьте в файл следующий фрагмент:

xml
Скопировать код
<properties>
    <javaHome>${env.JAVA_HOME}</javaHome>
</properties>

Таким образом, значение переменной окружения JAVA_HOME будет присвоено свойству Maven.

Кинга Идем в IT: пошаговый план для смены профессии

Переменные окружения и воспроизводимость сборки

Важной особенностью использования переменных окружения при процессах CI/CD является стремление к воспроизводимости сборки. Рекомендуется документировать все необходимые переменные, а также определять для них значения по умолчанию:

xml
Скопировать код
<properties>
    <!-- В случае, если JAVA_HOME не определена, устанавливаем значение по умолчанию -->
    <javaHome>${env.JAVA_HOME:-/default/path/to/jdk}</javaHome>
</properties>

Так, при отсутствии указания JAVA_HOME будет использован предустановленный путь.

Профили: настройка конфигураций проекта как профи

Профили Maven обеспечивают удобное управление конфигурациями для различных сред. Рассмотрим на примере:

xml
Скопировать код
<profiles>
    <profile>
        <id>production</id>
        <properties>
            <!-- Переменная окружения для производственной среды -->
            <envConfig>${env.PROD_DB}</envConfig>
        </properties>
    </profile>
</profiles>

Для активации профиля следует воспользоваться командной строкой:

shell
Скопировать код
mvn clean install -Pproduction

Возможные проблемы? Защитите свои настройки

Перед публикацией кода удостоверьтесь, что все необходимые переменные окружения определены:

shell
Скопировать код
#!/bin/bash
# Проверяем наличие JAVA_HOME
: ${JAVA_HOME:? "ОШИБКА: JAVA_HOME не определена."}
# Запускаем Maven
mvn clean install

Эта сборка будет прервана, если переменная JAVA_HOME отсутствует, предотвращая тем самым возможные ошибки.

Визуализация

Взаимоотношение между POM.xml и переменными окружения можно представить аналогией с DJ-пультом:

Markdown
Скопировать код
🎧 DJ Пульт Управления: POM.xml

Вы можете переключить POM.xml на использование других переменных окружения:

xml
Скопировать код
<properties>
    <envVar>${env.ВАША_ПЕРЕМЕННАЯ}</envVar>
</properties>

Как и при настройке DJ-сета, вы регулируете поведение проекта с помощью переменных окружения в Maven.

Конфигурирование плагинов и использование переменных окружения: эффективный дуэт

Настройка плагинов может происходить через переменные окружения. Рассмотрим на примере maven-replacer-plugin:

xml
Скопировать код
<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>maven-replacer-plugin</artifactId>
    <version>1.5.3</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <!-- Процесс подстановки токенов -->
                <file>${project.build.directory}/config/app.properties</file>
                <token>@envVar@</token>
                <value>${env.ENV_VARIABLE}</value>
            </configuration>
        </execution>
    </executions>
</plugin>

В данном случае @envVar@ в файле app.properties заменяется на значение переменной окружения ENV_VARIABLE.

Регистрозависимость и проверка совместимости: позаботьтесь о деталях

Переменные окружения обычно пишутся большими буквами, следите за правильностью обращений:

xml
Скопировать код
<buildNumber>${env.BUILD_NUMBER}</buildNumber>

Также не забывайте проверять совместимость обращения к переменных окружения в вашей версии Maven.

Продвинутые методы подстановки

В некоторых ситуациях вам может потребоваться более сложная подстановка, где на помощь придут скрипты:

shell
Скопировать код
source ./maven_script.sh
mvn -Dproperty.file=env.properties clean install

Сначала выполняется скрипт maven_script.sh, устанавливающий начальные переменные окружения, а затем эти переменные передаются в процесс сборки Maven.

Полезные материалы

  1. Maven – Введение в профили сборки — раскрывает использование переменных окружения в профилях Maven.
  2. Плагин ресурсов Apache Maven – Фильтрация — демонстрирует фильтры для внедрения переменных окружения в сборки Maven.
  3. Основные возможности — описание подхода Spring Boot к конфигурации с применением переменных окружения.
  4. Just a moment... — объясняет разницу между System.getProperty() и System.getenv().
  5. Just a moment... — знакомит с основам работы со свойствами Maven, их установкой и фильтрацией.
Свежие материалы