Мы постепенно заменяли файлы пакетных команд (windows .bat), которые просто объединяли классы, скомпилированные в IDE для разработчиков, с более полными сборками Ant (т. Е. Получали из CVS, чистую компиляцию, jar, архив, электронную почту и т. Д.)
Я потратил много времени на изучение (и отладку проблем) с Ant, поэтому мне удобнее использовать его для этих задач. Но мне интересно, используется ли Ant так же широко, как это было, когда я только начинал учиться, или «мир перешел» к чему-то более новому (и, возможно, более гладкому). (Я начал видеть больше материалов для сборки Maven, которые я никогда не использовал, например.)
Практический смысл этого вопроса : подталкиваю ли я новых разработчиков к изучению Ant , или они должны изучать что-то еще для сборок?
Я никогда не слишком в курсе этих тенденций, поэтому было бы здорово услышать от других разработчиков Java, что они считают лучшим инструментом для сборки и что, по их мнению, должны изучать новые разработчики.
Ответы:
Я согласен с другими здесь, что Maven, кажется, взял на себя большинство значимых проектов, на которые я смотрел.
Хотя Ant обладает высокой гибкостью, файл сборки не стандартизирован, поэтому при переходе в новый проект или компанию цели называются по-разному, файл структурируется по-разному, зависимости между целями могут устанавливаться или не устанавливаться и т. Д.
С Maven вы также получаете преимущество, заключающееся в отсутствии необходимости переносить двоичные зависимости (я говорю о jars) в вашей системе SCM. Множество других замечательных инструментов Java знают, как читать POM-файлы Maven (преимущество стандартизации), поэтому такие инструменты, как IDE, могут очень быстро настроить проект Maven, а инструменты сборки, такие как Jenkins, могут легко выполнять сборки Maven.
источник
Я работал с Ant и Maven. По моему опыту, у Maven очень сильное преимущество над Ant.
Что касается менее положительного замечания о maven, мой опыт работы с его документацией был пока не таким большим. Я думаю, что видел продукт с документацией хуже, чем у maven, но я не могу вспомнить, какой именно (какая-то древняя библиотека CSV iirc).
источник
Мы использовали Maven в течение нескольких лет. Он поддерживает скрипты Ant (точно так же, как Ant поддерживает BeanShell), поэтому ваши знания Ant могут быть полезны. Maven гораздо более мощный, но у него есть некоторые дополнительные требования к инфраструктуре (вам нужно, чтобы сервер Artifactory или Nexus размещал ваши сборки, если вы разделяете компоненты между несколькими проектами). Это также сильно отличается от Ant, поэтому вы не можете использовать большую часть своих существующих знаний.
источник
Я думаю, что муравей сам по себе мертв в воде; необходимость указывать все ваши зависимости classpath вручную (в зависимости от вашей настройки) слишком ручная и подвержена ошибкам. Если Ant используется вместе с инструментом управления зависимостями, таким как Ivy, он сохраняет свою силу и устраняет необходимость вручную управлять вашими зависимостями.
Другая проблема с Ant по сравнению с Maven - это отсутствие стандартизации, о которой упоминалось в других ответах. При переходе от проекта к проекту или от работы к работе одна из самых неприятных вещей, которые я нахожу, - это изучение нового стандарта для различных файлов Ant. Цель соглашения Maven о конфигурации означает, что два разных проекта будут иметь очень схожую структуру, делая переход между ними намного проще, чем с Ant.
Что касается того, является ли Ant по-прежнему мейнстримом или нет, это будет зависеть от среды разработки, в которой вы работаете. Если проект находится в небольшой компании или стартапе, я бы подумал, что Maven будет естественным выбором, и время можно потратить инвестировать в инфраструктуру, такую как Артефактура. Однако крупные компании будут вкладывать много лет и много денег в свою инфраструктуру Ant (конфигурации, глобальные файлы сборки и т. Д.), Что будет означать, что они будут менее заинтересованы в отходе от технологии, в которую они вложили столько денег.
источник
Maven был на подъеме в течение многих лет, и теперь я должен изучить это. Вещи всегда будут меняться, и знать, что муравей теряет свою позицию, не плохо.
Maven может быть новичком только на короткое время, но если это облегчает нашу работу, то стоит потратить время на обучение.
источник