Maven или Ivy для управления зависимостями от Ant?

Мне было интересно узнать, как лучше управлять зависимостями проектов от ant. Каковы плюсы и минусы задачи Maven Ant и плюща?

8 ответов

Решение

Поскольку вы хотите добавить управление зависимостями к существующему проекту Ant, это именно то, для чего предназначен Ivy. Управление зависимостями - большая часть Maven, но далеко не все. Maven - больше ориентированный на проект инструмент, который делает несколько других вещей в дополнение к зависимостям. Было бы целесообразно подумать, планируете ли вы перейти на Maven и использовать дополнительные функции Maven, но это немного, если все, что вам нужно, - это раскрутить Ant.

Ваш тип зависимостей и ваши ожидания от их поведения также будут иметь значение. Извлечение сторонних зависимостей в Maven почти тривиально, а Ivy превосходно перестраивает ваши собственные зависимые компоненты. В любом случае, инструменты не будут обеспечивать достойные политики сборки, управления версиями и хранилища, они все еще на ваше усмотрение и необходимы для правильной настройки.

Муравей + Плющ == Палаточный лагерь, где люди используют объекты по мере необходимости.
Maven == Курорт, где вы полагаетесь на кого-то другого для предоставления услуг.

Maven проще для команды, не имеющей опыта сборки / интеграции, но когда команде нужно отклониться от стандартов Maven, они обнаружат, что стремятся к отличному, нездоровому, и отсутствие надежной документации станет разочаровывающим.

Ant + Ivy потребуется больше времени для запуска проекта, но если у команды есть опыт сборки / интеграции, они могут адаптировать систему сборки к своему способу разработки и выпуска кода.

В инженерных... технологических компаниях я всегда настаиваю на выборе места для лагеря, а не на курорте.

Удивительно, что и Ant, и Maven выбирают XML в качестве языка для выражения рецептов сборки. Сообщество Java застряло на этом XML...

Я думаю, что этот пост охватывает именно то, что ищет ОП:

Почему вы должны использовать Maven Ant Tasks вместо Maven или Ivy

Плющ + Муравей намного, намного более гибок. Айви управляет зависимостями, точка, и это делает это очень хорошо, лучше, чем Maven. А с помощью Ant вы можете собрать практически любую систему сборки, какую захотите.

Maven пытается контролировать все - "жизненный цикл" (компиляция, тестирование, упаковка и т. Д.), Где должны храниться файлы и т. Д. Получайте удовольствие, настраивая плагины и тому подобное, если вам не нравится "Maven way".

Maven - это ответ на вопрос, который никто не задавал. Написание сценария Ant не сложно, и Ivy дает вам лучшее управление зависимостями, чем Maven. Я смущен некоторыми предыдущими комментариями, заявляющими, что они не могли заставить Айви работать. Ivy немного проще, чем Maven, чтобы начать работать.

Spring Framework использует Ivy в процессе сборки. Я думаю, что это можно рассматривать как вотум доверия Айви.

Если ваша долгосрочная цель - перейти на использование Maven для управления всем процессом сборки (что может потребоваться для новых проектов с нуля), я настоятельно рекомендую использовать файлы Maven pom.xml для управления зависимостями от имени Ant build.xml. файлы. Конечный результат заключается в том, что и ваши новые проекты, и ваши старые проекты используют один и тот же механизм для управления зависимостями. И оказывается, что Maven действительно лучше справляется с управлением зависимостями для файлов Ant build.xml, чем Ivy.

До принятия Maven в качестве нашего основного инструмента для сборки у меня была попытка разработчика использовать Ivy в сочетании с существующими файлами Ant build.xml. Это был самый неприятный опыт, который очень скоро заставил нас отказаться от Айви. Мы пошли на усыновление Maven. Наши проекты с нуля начали строиться с использованием стандартного подхода Maven и т. Д.

Однако я вернулся к устаревшим проектам Ant и начал использовать задачу Ant Maven для определения определений пути к классам (а иногда и других определений свойств Ant, извлеченных из файла pom.xml). Это оказалось самым превосходным опытом. Существующие файлы Ant build.xml нужно лишь слегка изменить, чтобы использовать интеграцию с Maven ant для определения любого пути к классам, который использовался в файле build.xml. Все зависимости, требуемые проектом, были определены в прилагаемом файле pom.xml, который обрабатывается Maven с помощью задачи Ant, включенной в файлы build.xml.

Области Maven могут быть использованы для точной настройки определений пути к классам, так что может быть создан подходящий для компиляции, запуска модульного теста или для упаковки и др. Кроме того, практически любой элемент чего-либо определенного в файле pom.xml может быть указан как свойство Ant в файле build.xml.

На самом деле с заданием Муравей для Maven нет никаких жизнеспособных причин для существования Ivy.

Сравнение Maven с ivy/ant- это сравнение смартфона и телеграфии.

Если вы хотите использовать реальный устойчивый эффект в своей инфраструктуре сборки, лучше использовать Maven, потому что он предвидит и абстрагирует все процессы и задачи, с которыми сталкивается каждый программный проект или другой программный проект. Я принимал участие во многих проектах, и если ваши проекты станут более сложными, более разнообразными и более разнородными, вы еще больше оцените простоту конфигурации проекта Maven. Действительно, это станет сложным, но не сложным по сравнению с управляемыми плющом / муравьем проектами.

Основным преимуществом Maven является очень важная парадигма "соглашение по конфигурации" (http://en.wikipedia.org/wiki/Convention_over_configuration). Короче говоря, это означает, что вам не нужно знать / настраивать очевидные / тривиальные / обычные вещи. Хотя Maven и все его плагины поставляются со многими настройками по умолчанию, у вас всегда есть возможность настроить свои проекты для ваших особых потребностей. С Maven, с одной стороны, вы можете легко и быстро настроить проект; с другой стороны, вы можете настроить растущий проект в соответствии с вашими потребностями с минимальными усилиями. Если вы поняли ключевые концепции Maven, вы будете использовать каждый проект, а также проекты, которые не являются типичными проектами разработки программного обеспечения.

В прошлом я написал много сценариев для муравьев, и с наступающим Maven я начал ненавидеть муравьев. Одним из недостатков является то, что вы всегда копируете скрипты и повторяете себя, разрабатываете муравьиные задачи, которые не повторяют задачи, которые не повторяют задачи, которые не повторяются... И главный недостаток заключается в том, что растущие муравьиные скрипты, как правило, становятся непригодными, особенно если дюжина муравьев-муравьев хочет показать друг другу муравьиные сценарии.

Многие энтузиасты-муравьи страдают от общего контроля над такими тривиальными вещами, как копирование артефактов и печать сборочных сообщений. Но поскольку основная концепция Maven заключается в том, чтобы скрыть эти тривиальные вещи, легенда навсегда останется в живых, поскольку Maven ограничивает потребности в настройке. Но не волнуйтесь, это легенда! Итак, вы наконец поняли мое первоначальное утверждение: не беспокойтесь о тривиальных вещах, которые уже решены.

Возможно, ivy/ant- вариант для простых проектов, но для сложных растущих проектов вам нужны простота и соглашения. В противном случае вы будете перегружены все большим количеством проблем с обслуживанием. Особенно, если у вас есть много зависимых проектов, технологий и разнородных частей продукта в глобальном проекте, у вас нет времени и денег на разработку и тестирование ant-скриптов или решение проблем с зависимостями.

Следует упомянуть еще один совет: Ant предлагает интеграцию Maven. Эта интеграция часто используется для тестирования и игры с maven в проектах, которые выросли с помощью ant. Избегайте этого глупого подхода, потому что он порождает больше проблем. Вместо этого оставайтесь с муравьем и его болью или полностью мигрируйте в мавена.

Если вы сомневаетесь в стоимости миграции, я предлагаю вам использовать противоположный способ интеграции этих разных миров с помощью Maven-Ant-Plugin. С помощью этого стандартного плагина вы можете без труда запускать каждый ant-скрипт. Конечно, какое-то время это унаследованное решение, но оно дает вам столько времени, сколько вам нужно, чтобы понять мега-строки чудовищно искаженных некомментированных сценариев муравьев вашего предшественника.

А теперь вы оцените следующее преимущество maven: вам нужно меньше документации по вашей конфигурации, потому что документация является частью каждого подключаемого модуля maven, который вы хотите использовать.

Так что, признаюсь, я был антагонистом мавена.

Я знаю, что одним из преимуществ Ivy является то, что он может использовать различные виды репозиториев. Maven обычно очень жесток в формате репозитория, который он будет использовать. Это все, что я знаю.

Я только что провел 2 дня, читая документацию Ivy, и я должен сказать, ИСПОЛЬЗУЙТЕ MAVEN, если у вас есть какой-либо выбор. Насколько я могу судить, Айви полная и полная фигня. Я просто потратил впустую 2 дня, пытаясь включить его в свою сборку, и сейчас сокращаю свои потери. Зачем?

  • Плющ - наполовину попытка управления зависимостями
  • Документация плюща - полная шутка
  • Примеры плюща и учебник бесполезны

Как только я ввел "конфигурации" (читай как профили maven), Айви начала безумно скачивать всякие ненужные вещи, которые мне не нужны, а затем терпеть неудачу. Документация для Айви - полная шутка. Maven документация в сравнении читается как сон. Если вам нужен пример того, насколько непонятной и плохо написанной является документация Ivy, взгляните на справочную страницу для конфигураций. Это неотъемлемая часть любой сборки, но в Ivy они плохо продуманы.

Другие вопросы по тегам