1. Змінні в Maven – properties

Параметри, що часто зустрічаються, Maven дозволяє винести до змінних. Це дуже корисно, коли потрібно, щоб у різних частинах pom-файлу параметри збігалися. Наприклад, у змінну можна винести версію Java, версії бібліотеки, шляхи до певних ресурсів.

Для цього є спеціальна секція в pom.xml – <properties>, в якій оголошуються змінні. Загальний вид змінної такий:

<ім'я-змінної>значення</ім'я-змінної>

Приклад:

<properties>
    <junit.version>5.2</junit.version>
    <project.artifactId>new-app</project.artifactId>
    <maven.compiler.source>1.13</maven.compiler.source>
    <maven.compiler.target>1.15</maven.compiler.target>
</properties>

Для звернення до змінних використовується інший синтаксис:

${ім'я-змінної}

Там, де написано такий код, Maven підставить значення змінної.

Приклад:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <finalName>${project.artifactId}</finalName>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
        </configuration>
    </plugin>
</build>

2. Попередньо визначені змінні в Maven

При описі проєкту в pom-файлі можна використовувати певні змінні. Їх можна умовно поділити на кілька груп:

  • Вбудовані характеристики проєкту;
  • Властивості проєкту;
  • Налаштування.

Вбудованих властивостей проєкту лише дві:

Властивість Опис
${basedir} кореневий каталог проєкту, де розташовується pom.xml
${version} версія артефакту; можна використовувати ${project.version} або ${pom.version}

На властивості проєкту можна посилатися за допомогою префіксів «project» або «pom». Їх у нас чотири:

Властивість Опис
${project.build.directory} «target» директорія проєкту
${project.build.outputDirectory} «target» директорія компілятора. За замовчуванням – «target/classes»
${project.name} найменування проєкту
${project.version} версія проєкту

Доступ до властивостей settings.xml можна отримати за допомогою префікса settings. Імена можуть бути будь-якими – беруться із settings.xml. Приклад:

${settings.localRepository} встановлює шлях до локального репозиторію.