у чому відмінність Ant і Maven
Java Tools /
Інструменти
ant – гнучкий інструмент скриптового типу. Має велику кількість реалізованих "команд", які можна включати у будь-якій кількості та будь-якому порядку в т.зв. завдання. Завдання також можуть мати залежності, при цьому ant сортує весь граф залежностей і виконує завдання гарантовано в правильному порядку.
Ті команди, які вимагають використання classpath, мають теги, що дозволяють цей classpath вказати. Можна вказувати директорії з класами, jar-файли, директорії, що містять jar-файли.
За відсутності потрібної команди її можна написати - API легко розширюємо.
maven – досить жорсткий збирач. Інструмент заточений під складання програмного продукту, написаного Java. Має кілька життєвих циклів - default (складальний), site та clean. Кожен життєвий цикл має певні фази, до яких можна прив'язувати виконання плагінів.
classpath формується автоматично. Складальний скрипт містить секцію залежностей, де вказуються всі необхідні бібліотеки з версіями. Бібліотеки беруться із репозиторію. У репозиторії разом із бібліотеками зберігаються їх описники, у яких вказано вже залежність бібліотек.
Таким чином, maven дозволяє вказати тільки ті залежності, які Вам потрібні в коді. При правильно зазначеному репозиторії (або репозиторіях) усі бібліотеки автоматично будуть завантажені разом із усіма залежностями. Власне це одна з ключових особливостей maven.
Мені особисто maven не подобається жорсткістю. За допомогою ant я можу зробити все, що завгодно. Викликати будь-яку команду, в будь-який момент часу і скільки завгодно разів. З maven це не проходить. Він не дає зробити речі, які не вкладаються у його уявлення про життєвий цикл. Наприклад, мені не вдалося змусити йогозгенерувати вихідники по двох wsdl у двох різних директоріях. Або викликати один і той же плагін двічі.
maven хороший, коли Вам потрібно зробити типове завдання - зібрати програму, згенерувати по ній документацію. Коли потрібно щось складніше - ми писали ant-скрипт і викликали його з maven-а.