Подтвердить что ты не робот

Maven vs Ant для автоматических сборок в приложениях для Android

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Моя большая жалоба на Maven заключается в том, что она настолько плохо документирована. Там есть Wiki, но почти нет контента и очень мало руководств.

Ответ 2

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

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

A Gradle build написано в Groovy, поэтому у вас есть полная мощность скриптового языка под рукой!

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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