Я хотів би протиставити кілька скарг на цьому форумі:
Мейвен - це все-нічого. Або принаймні, наскільки я міг сказати з документації. Ви не можете легко використовувати maven в якості заміни мурашника і поступово застосовувати більш досконалі функції.
Це неправда. Великий виграш Мейвена - це використовувати його для раціонального управління своїми залежностями, і якщо ви хочете робити це в Maven і робити все інше в мурашника, ви можете. Ось як:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
Тепер у вас є об'єкт classpath з назвою 'maven.classpath', який містить усі основні залежності, визначені у файлі pom. Все, що вам потрібно, - це помістити банку з завданнями мурашки в каталог ваших мурашок.
Maven робить ваш процес збирання залежним від вашого мережевого з'єднання.
Процедура залежності та завантаження плагінів за замовчуванням залежить від підключення до мережі, так, але лише для початкової збірки (або якщо ви змінюєте залежність або плагіни, що використовуються). Після цього всі банки локально кешуються. І якщо ви хочете застосувати безмережеве з'єднання, ви можете сказати maven використовувати режим офлайн.
Це накладає на вас жорстку структуру з самого початку.
Не зрозуміло, чи йдеться про формат файлу або проблему "конвенція проти конфігурації". Для останнього існує дуже багато невидимих за замовчуванням, таких як очікуване розташування вихідних файлів і ресурсів Java або сумісність джерела. Але це не жорсткість, це введення для вас значущих значень за замовчуванням, тому вам не потрібно їх чітко визначати. Усі налаштування можна легко замінити (хоча для початківця в документації важко знайти, як змінити певні речі).
Якщо ви говорите про формат файлу, це добре висвітлено у відповіді на наступну частину ...
Це на основі XML, тому читати так само важко, як і ANT.
По-перше, я не бачу, як можна поскаржитися на те, що якийсь аспект чогось "Не кращого за мурашник" як виправдання тому, що він має погану відповідь. По-друге, поки це ще XML, формат XML значно більш визначений. Крім того, оскільки його так визначено, набагато простіше зробити розумний товстий клієнт-редактор для POM. Я бачив сторінки, як довгі мурашки створюють сценарії, які стрибають всюди. Будь-який редактор сценаріїв для створення мурашок не збирається зробити це більш приємним, а лише черговим довгим списком взаємопов’язаних завдань, представлених дещо по-іншому.
Сказавши, що я бачив кілька скарг, які я бачив тут, які мають чи мають певну валідність, найбільша істота
- Документація погана / відсутня
- Відтворювані склади
- Інтеграція затемнення погана
- Клопи
На що моя відповідь двояка. По-перше, Maven - це набагато молодший інструмент, ніж Ant або Make, тому вам доведеться сподіватися, що для досягнення рівня зрілості цих програм знадобиться час. По-друге, добре, якщо вам це не подобається, виправте це . Його проект з відкритим кодом та його використання, а потім скарги на щось, на що кожен може допомогти у вирішенні, здається мені досить асиніним. Вам не подобається документація? Сприяйте цьому, щоб зробити його зрозумілішим, повнішим або доступнішим для початківця.
Проблема, що відтворюється, розбивається на два випуски, діапазон версій та автоматичне оновлення додатків Maven. Що стосується плагіну, у тому числі, якщо ви не переконуєтесь, що при повторному відновленні проекту через рік ви користуєтеся точно такою ж JDK та точно такою ж версією Ant, то це просто та сама проблема з іншою назвою. Для діапазонів версій я рекомендую працювати над плагіном, який створить тимчасовий пом із заблокованими версіями для всіх прямих та перехідних залежностей та зробить його частиною життєвого циклу випуску Maven. Таким чином, ваш poms build poms - це завжди точний опис усіх залежностей.