Maven vs Ant для автоматической сборки в приложениях Android - PullRequest
27 голосов
/ 05 июня 2011

Я оцениваю, использовать ли Ant или Maven для автоматизации процесса сборки для разработки под Android. Я пытался читать онлайн, чтобы принять обоснованное решение, но не нашел много особенностей, которые касаются разработки Android. Исходя из вашего опыта:

  • В чем основные отличия?
  • Я читал, что некоторые люди говорят, что у них разные цели? Что бы это было?
  • Что заставило бы тебя выбрать одно из другого?
  • Каковы сильные и слабые стороны каждого?
  • Что проще в настройке и обслуживании?
  • Есть ли кто-то, кто предлагается / наиболее часто используется в сообществе?

Я нашел похожий вопрос Какие преимущества дает Maven (по сравнению с муравьем) для создания проектов Android? , но он спрашивал о Преимущества Maven перед Ant, и, во-первых, я даже не знаю о преимуществах Ant, а во-вторых, он только что получил один ответ, который не прояснил для меня вещи.

Я использую Intellij, на всякий случай, если это имеет какое-то значение, хотя я надеюсь, что нет.

Ответы [ 4 ]

13 голосов
/ 06 июня 2011

Если вы можете использовать Maven, идите с Maven. И не смейте пытаться изменить стандартные каталоги! Черт возьми, даже когда мы используем Ant, я настаиваю на том, чтобы мы устанавливали каталоги как Maven. Таким образом, новые разработчики знают, где что находится, или должны проследить через build.xml, чтобы найти, где что находится. Другое дело, что если вы используете Ant, вы также должны использовать Ivy . Таким образом, вы получаете обработку зависимостей Maven в Ant.

Большая ирония в том, что, как только мы используем Ant и Ivy и придерживаемся стандартной структуры каталогов Maven, переход от Ant к Maven становится несложным делом. Но нужно , чтобы перейти в Maven, также уменьшена. Наш build.xml прост и понятен. Все файлы находятся в нужном месте. Сборки быстрые, простые и простые в обслуживании. Кому нужен Maven?

Проблема в том, что, как только мы достигнем этого состояния Нирваны, мы не сможем направить проект обратно в штат Нью-Джерси. Разработчики начинают вырезать исключения в нашем build.xml. Не компилируйте этот *.java файл. Переместите этот *.xml в наш каталог java, поместите тестовый код в каталог main, но мы поместим имя test в файл, чтобы мы знали, что это тестовый код ... Новые и сложные вещи сделанный. И, так или иначе, мы вернулись в Secaucus.

Итак, как только я получил свой Ant-проект, достаточно чистый и аккуратный, чтобы перейти в Maven, я совершил прыжок.

Еще одна вещь: Maven позволяет очень и очень просто копировать проект с одного компьютера на другой. Maven обрабатывает все зависимости, даже сборку. Не более, вам нужно AntContrib , или вам нужно загрузить hibernate Ant задачи . Если вам что-то нужно, оно загрузится само. Это одна из главных причин, почему Maven так популярен на многих сайтах с открытым исходным кодом.

Моя большая жалоба на Мейвена состоит в том, что он так плохо документирован. Вики есть, но контента почти нет, а руководств очень мало.

4 голосов
/ 03 августа 2011

Рассмотрите возможность использования Gradle!

Он сочетает в себе лучшее из Maven (соглашение о конфигурации) с лучшим из Ant (гибкость и огромная библиотека готовых задач).

AСборка Gradle написана на Groovy, поэтому у вас под рукой есть все возможности языка сценариев!

Для Gradle есть плагин для Android.Я не использовал его, поэтому не могу сказать, хорошо это или нет.

См. http://www.gradle.org

4 голосов
/ 05 июня 2011

В последнее время я мало использовал Ant или Maven для Java, но я могу сказать вам основные различия между ними - это сводится к автоматическим соглашениям (Maven) и абсолютной гибкости (Ant).

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

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

Лично я бы использовал Maven поверх Ant, если это возможно, но признаю, что это не всегда возможно.

3 голосов
/ 06 июня 2011

Я полностью согласен с ответом Андрея.Однако я хотел бы отметить, что поддержка maven не предоставляется командой Android SDK.Он предоставляется третьей стороной .Теперь они являются активными участниками, но это все еще означает, что может быть задержка в получении поддержки самых последних функций.

Тем не менее, мне не особо нравится поддержка муравьев, предоставляемая Android SDKкоманда.Если вы запустите android create project, вы получите build.xml, который рекомендует вам скопировать фрагменты вставки XML, чтобы настроить его.Это делает обременительным переход на новую версию Android SDK.

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

...