Apache Maven
Тип програма для автоматичного складання
Розробник Apache Software Foundation
Стабільний випуск 3.9.0 (31 січня 2023; 14 місяців тому (2023-01-31))
Платформа віртуальна машина Java
Операційна система крос-платформовий
Мова програмування Java
Ліцензія Apache License 2.0
Репозиторій github.com/apache/maven
Вебсайт maven.apache.org

«Apache Maven» — це засіб автоматизації роботи з програмними проєктами, який спочатку використовувався для Java проєктів. Використовується для керування (management) та складання (build) програм. Створений 2002 року Джейсоном ван Зилом. За принципами роботи кардинально відрізняється від Apache Ant, та має простіший вигляд щодо build-налаштувань, яке надається в форматі XML. XML-файл описує проєкт, його зв'язки з зовнішніми модулями й компонентами, порядок будування (build), теки та необхідні плагіни. Сервер із додатковими модулями та додатковими бібліотеками розміщується на серверах. Раніше Maven був частиною Jakarta Project.

Для опису програмного проєкту, який потрібно побудувати (build), Maven використовує конструкцію відому як Project Object Model (POM), залежності від зовнішніх модулів, компонентів та порядку побудови. Виконання певних, чітко визначених завдань — таких, як компіляція коду та пакетування відбувається шляхом досягнення заздалегідь визначених цілей (targets).

Ключовою особливістю Maven є його мережева готовність (network-ready).

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

Maven забезпечує підтримку побудови не просто перебираючи файли з цього репозиторію, але й завантажуючи назад артефакти у кінці побудови. Локальний кеш звантажених артефактів діє як первісний засіб синхронізації виходу проєктів на локальній системі.

Maven базується на плагін-архітектурі, що дозволяє зробити використання будь-якої програми контрольованим через стандартний вхід. Теоретично, це могло б дозволити будь-кому писати плагіни для інтерфейсу з інструментами для побудови (компілятори, тестери тощо) для будь-якої мови. На ділі, підтримка й використання для мов відмінних від Java були мінімальною. Тепер існують плагіни для .NET та C/C++.

Приклад ред.

Maven конфігурує проєкти за допомогою конструкції ProjectObjectModel, що зберігається в файлі pom.xml. Найпростіший приклад цього файлу:

<project>
  <!-- версія моделі для POM-ів Maven 2.x завжди повинна бути 4.0.0 -->
  <modelVersion>4.0.0</modelVersion>
  
  <!-- координати проєкту, тобто набір значень, які
       дозволяють однозначно ідентифікувати цей проєкт -->
  
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>

  <!-- залежності від бібліотек -->
  
  <dependencies>
    <dependency>
    
      <!-- координати необхідної бібліотеки -->
      
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      
      <!-- ця бібліотека використовується тільки для запуску і компіляції тестів -->
      
      <scope>test</scope>
      
    </dependency>
  </dependencies>
</project>

Посилання ред.