Каковы преимущества/недостатки использования Maven?

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

В чем преимущества/недостатки использования Maven 2, например:

  • Почему вы переключились на maven?
  • Почему вы выбросили maven и использовали что-то другое?
  • В чем проблема? решаете для вас?
  • В чем проблема? причина для вас?

Спасибо!

Ответы

Ответ 1

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

Я построил что-нибудь из стандартных java-проектов JAR/WAR/EAR для приложений flex/AIR и RPM Linux, используя maven, делегируя либо Antrun или GMaven, когда для данной ситуации не доступен плагин maven.

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

Идите вперед и bash, но пока вы не придумаете что-то лучшее, я буду продолжать использовать его.

Ответ 2

Мейвен фантастичен!

У меня не так много времени, чтобы воскликнуть лирическим, как хотелось бы, но вот мои лучшие преимущества Maven, ни в каком конкретном порядке:

  • Повторяемые сборки: если вы можете создать проект, ваши коллеги всегда смогут на своих машинах. Он также будет повторяться на сервере сборки.
  • Стандартизация системы сборки: новые разработчики, которые не согласятся с Maven, мгновенно узнают, как создавать, выпускать, тестировать и т.д., устраняя много накладных расходов.
  • Фокус на автоматизации: Maven ставит вас в сознание автоматизации процессов вокруг разработки вашего программного обеспечения.
  • Конформационная конфигурация: нет никакой настройки или минимальной конфигурации, необходимой для сборки артефактов.
  • Управление зависимостями: Maven будет разрешать и управлять вашими зависимостями для вас.
  • Тестирование: возможность запуска тестов и интеграционных тестов как часть жизненного цикла вашего проекта.
  • Плагины: есть тысячи плагинов для выполнения различных задач. Они просто настраиваются только путем добавления ссылки в POM.

Что касается недостатков, часто говорят, что вам лучше не принимать значения Maven по умолчанию и соглашения, и в идеале начать использовать его в начале нового проекта. Я согласен с этим в какой-то степени, если вы хотите сэкономить время на настройку XML в POM.

Я не на самом деле инструмент ревнителя, но, использовав Make и Ant перед Maven, я действительно не вижу ни малейшего недостатка в принятии Maven. Это качественный инструмент и экономия времени в реальном времени.

Ответ 3

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

Менеджеры хранилищ свободно доступны, и я бы рекомендовал установить одно из следующих:

  • Nexus
  • Artifactory
  • Archiva

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

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

ANT проекты могут быть перепроектированы для взаимодействия с командами, использующими Maven. Плагин ivy, применяемый правильно, может фактически упростить процесс сборки ANT. ivy может управлять маршрутом класса проекта, загружая зависимости из репозитория Maven и впоследствии публикуя артефакты сборки (как раз как развертывание Maven) ").

Наконец ivy встроен в другие инструменты сборки. Примерами являются новые инструменты построения, такие как Gradle, simple-build-tool и системы разработки, такие как Grails. Поэтому включите использование репозитория Enterprise Maven и выберите инструмент построения, подходящий для команды проекта.

Ответ 4

Пока мне это не нравится. Когда я использую maven, время сборки для проекта резко возрастает. От нескольких мс до секунды на просто затмение, до более 30 секунд даже для самого простого проекта maven.

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

Ответ 5

Я начал с maven, и я остаюсь с ним. Когда я создаю проект с maven, у меня никогда не бывает проблем с отсутствующими библиотеками, неправильными версиями библиотек... Он компилируется, он запускается.

Обновление библиотек прост (не как Ant).

Maven предоставляет множество полезных плагинов. Я использую maven для запуска тестирования функциональности на hudson - он загружает новейшую версию моего проекта, запускает внедренную базу данных, внедряет набор данных dbunit, развертывает приложение на пристани, запускает тест, отображает результаты тестирования.

Одна вещь, которая мне не нравится - это иметь все в одном файле. Затем я хотел бы указать конфигурацию не только с использованием XML.

Ответ 6

Я согласен с Марком в том, что это отлично подходит для проектов с новыми проектами. Есть немного накладных расходов, чтобы получить его и запустить в вашей среде разработки, но это того стоит.

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

Как и в любом проекте, убедитесь, что у вас есть хорошая политика и процедуры для ввода разных Jars в базу кода. Эти банки могут иметь разные лицензии, которые могут предоставить вашу базу кода в мире с открытым исходным кодом. Убедитесь, что эти лицензии просмотрены вашим.