Начинаем большой проект, который будет состоять из кучи подпроектов. Раздумываем какой тулз выбрать для менеджмента, рассматриваем Maven и Ivy(+Ant).
Есть довольно большой опыт сборок с Ant, нету большого опыта с Maven2 и вообще нету опыта — с Ivy.
Про Maven2 у меня сложилось мнение что это "вещь в себе" и с ним нужно потратить реально много времени чтобы понять ньюансы его работы, особенно проблемы связанные с загрузкой плагинов и библиотек из инета.
Здесь его сильно ругают:
Здравствуйте, Antei, Вы писали:
A>Если бы вы начинали новый проект, к чему вы сами бы склонялись — Maven2 или Ant + Ivy. Посоветуйте плз.
Пробовал оба. Ivy изначально казался более красивым, но при попытке его использовать — выяснилось несколько неприятных вещей про его multi-module билды.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, Antei, Вы писали:
A>>Если бы вы начинали новый проект, к чему вы сами бы склонялись — Maven2 или Ant + Ivy. Посоветуйте плз. C>Пробовал оба. Ivy изначально казался более красивым, но при попытке его использовать — выяснилось несколько неприятных вещей про его multi-module билды.
Поделитесь, в чем были проблемы?
Здравствуйте, Antei, Вы писали:
A>>>Если бы вы начинали новый проект, к чему вы сами бы склонялись — Maven2 или Ant + Ivy. Посоветуйте плз. C>>Пробовал оба. Ivy изначально казался более красивым, но при попытке его использовать — выяснилось несколько неприятных вещей про его multi-module билды. A>Поделитесь, в чем были проблемы?
Скажем, в Maven'е есть понятие "реактора" — набора одновременно собираемых модулей, так что Maven'у не нужно создавать jar'ы всех зависимых модулей при простой компиляции. Еще фазы компиляции в Maven'е тоже более продуманы.
А вот рекламируемая фича Ivy — разруливание конфликтов библиотек, как-то не понадобилась.
Sapienti sat!
Re: Maven или Ivy + Ant
От:
Аноним
Дата:
06.02.08 12:18
Оценка:
Смотрел немного и то, и другое. Оказалось сложно и недостаточно гибко, поэтому остановился на pure Ant + пара собственных тасков для управления зависимостями.
Здравствуйте, Antei, Вы писали:
A>Начинаем большой проект, который будет состоять из кучи подпроектов. Раздумываем какой тулз выбрать для менеджмента, рассматриваем Maven и Ivy(+Ant).
Вот тоже думал над этим же вопросом недавно. Т.е. есть проект средних размеров с большим количеством модулей (10+). Сейчас все собирается Ant. Решил попробовать внедрить Maven2. Правда дело это не простое — нужно чтобы код был организован "правильно", а не так, как у нас Уже потратил несколько дней на его перекладывание по папкам — вроде как приятней работать стало, хотя Maven'а еще и рядом нет.
Здравствуйте, Antei, Вы писали:
A>После таких статей как-то страшновато с ним завязываться в реально большом проекте. Я не хочу столкнуться с "Maven2's black magic" когда релиз на носу A>Если бы вы начинали новый проект, к чему вы сами бы склонялись — Maven2 или Ant + Ivy. Посоветуйте плз.
Ivy не пробовал. Но про Maven скажу, что это действительно black magic. Но зная это, можно использовать знание в своих целях. По опыту эксплуатации выяснилось, что
лучше не использовать SNAPSHOT'ы плагинов maven, потому как у них может довольно сильно поменяться интерфейс и логика работы и сборка будет посто янно состоять из переписывания pom.xml;
держать свой прокси обязательно (пользовал maven-proxy и artifactory, оба нравятся), поскольку версию из общего репозитория могут просто убрать и необходимо будет переписывать зависимости и, в некоторых случаях, куски своей программы.
Здравствуйте, Antei, у нас есть двухлетний опыт работы с maven 1 и полутора годовой опыт работы с maven 2.
Оглядываясь назад, можно сказать, что ушло довольно много времени на выяснение специфических особенностей. С другой стороны, почти все нестандартные действия были реализованы с помощью maven 2 и библиотеки плагинов. Такие как, создания несколько версий для разных jvm, инсталляция standalone-приложения, генерация xdoclet и т.д.
Рекомендую для развернутого понимания maven скачать исходники, например artifactory, и исследовать как разработчики оформили с помощью maven 2 многоуровневый проект.
Есть опыть как с Maven2, так и с Ant, в результате чего вырисовывается следующее личное впечатление: в случае если прикручивается билд-механизм к огромному и извращённому legacy-коду, то лучше Ant и быть не может. В то же время если проект начинается с нуля, то очень сильно рекомендуется сразу завязаться на Maven2 — позже будет проще, особенно в части вспомогательных задач, таких как, например, генерация отчётов по коду (тестовое покрытие, статический анализ кода, метрики, и т.п.).
Например, сейчас вот есть проект с 18 модулями, отлично управляется c помощью Maven2 с редкими вкраплениями Ant-a (посредством уже упомянутого тут antrun-a). Никакой особенной магии не наблюдается.