У великих проектах, де кількість сторонніх бібліотек зростає чи не швидше кількості написаних рядків коду, управління залежностями і підтримання їх переліку в актуальному стані у всіх членів групи розробників стає дуже складним завданням. І тут, як не можна до речі, на допомогу приходить Maven.
Коротко про Maven
Maven - система для автоматичного складання проектів. Переваги використання maven не обмежуються спрощенням управління залежностями проекту і на стільки великі і численні, що просто не можуть вкластися в одну статтю.
Серцем maven є конфігураційний файл pom.xml (Project Object Model). У цьому файлі описуються використовувані плагіни, залежно та інша необхідна інформація:
Безпосередньо залежності описуються в розділі dependencies. Для кожної використовуваної в проекті бібліотеки необхідно вказати ідентифікатор групи і артефакту, а також необхідну її версію. Цієї інформації maven-у досить, для пошуку зазначеної бібліотеки в репозиторіях.
Як правило, під репозиторіями розуміється зовнішній центральний репозиторій, в якому зібрано величезну кількість найбільш популярних і затребуваних бібліотек, і локальний репозиторій, в якому зберігаються копії використовуваних раніше бібліотек.
Значення ідентифікаторів групи і артефакту підключається бібліотеки практично завжди можна знайти на сайті www.mvnrepository.com. Якщо не вдасться знайти бібліотеку там, швидше за все гугл підкаже вам додатковий репозиторій, на якому шукана бібліотека присутній.
Додаткові репозиторії перераховуються в розділі repositories:
Часто, як залежності проекту, необхідно використовувати власні напрацювання. Шукати їх в центральному репозиторії або навіть в гуглі, очевидно, не має сенсу. У такій ситуації є два шляхи: описати залежність як системну і вказати фізичний шлях до бібліотеки, або додати бібліотеку в локальний репозиторій maven-а (останнє переважніше).
Щоб описати залежність як системну, крім версії, ідентифікаторів групи і артефакту вказується scope. для якого встановлюється значення system:
Для додавання бібліотеки в локальний репозиторій, існує команда install:
де:
шлях до додається бібліотеці; ідентифікатор групи, під яким буде зареєстрована бібліотека; ім'я артефакту; версія додається бібліотеки; спосіб упаковки бібліотеки, найчастіше jar;
Maven Integration for Eclipse (m2e)
Для інтеграції maven в eclipse існує плагін m2eclipse. Він дозволяє імпортувати існуючий maven-проект в eclipse і автоматично переналаштовує eclipse для розуміння структури maven-проекту і використання залежностей, описаних в pom.xml.
Створення нового maven-проекту
У діалозі для створення нових проектів (File -> New -> Other. Або Ctrl + N) виберіть Maven -> Maven Project
Далі, щоб вибрати проект з існуючих архетипів, залиште галочку Create a simple project знятої. Для створення простого проекту її слід поставити:
На наступному етапі, для створення простого проекту, необхідно вказати щонайменше ідентифікатор групи (найчастіше відповідає кореневого пакету, що формується з імені компанії і домену, наприклад ru.dokwork) і ідентифікатор артефакту, що відповідає назві створюваного проекту:
В результаті буде створений проект з наступною структурою:
Імпорт maven-проекту
У стандартному меню імпорту проектів (File -> Import.) Виберіть Maven -> Existing Maven Projects:
Вкажіть директорію імпортованого проекту (в якій лежить pom.xml):
В останньому пункті перевіряється стан необхідних плагінів:
На цьому імпорт проекту закінчено.
Отримання вихідних кодів і документації для використовуваних бібліотек
Ще одна перевага від використання maven в eclipse - це можливість простого і автоматичного отримання вихідних кодів і документації для використовуваних в проекті бібліотек (природно за умови, що вони є в репозиторії).
Натисніть правою кнопкою миші на проект в Package Explorer і виберіть Maven -> Download JavaDoc для завантаження документації і Maven -> Download Sources для завантаження вихідних кодів.
Maven -> Update project
У ряді випадків, при зміні pom.xml, виникає тривала помилка оновлення проекту:
Для її усунення натисніть правою кнопкою миші на проект в Package Explorer і виберіть Maven -> Update Project.