у чому відмінність 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-а.