Новый проект с Maven2 - PullRequest
       1

Новый проект с Maven2

2 голосов
/ 05 сентября 2010

Каков рекомендуемый способ использования Maven для проекта, который может вырасти в будущем? Я работаю с Eclipse и вижу разные подходы. Некоторые используют один проект без подмодулей, а некоторые, например, как mahout, имеют разные подпроекты для разных модулей (например, core, math, examples и т. Д.). Вы можете увидеть это по этой ссылке: http://svn.apache.org/repos/asf/mahout/trunk/

Есть ли преимущество в том, чтобы отдавать предпочтение одному над другим?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 05 сентября 2010

Решение о разделении проекта на модули должно зависеть от того, как вы хотите проектировать и поддерживать свое приложение. Сам Maven будет хорошо работать, независимо от того, решите ли вы создать многомодульный проект или объединить все в один модуль. Тогда возникает вопрос: каковы преимущества / недостатки разделения вашего приложения на несколько модулей?

Некоторые драйверы для разделения вашего приложения являются чисто техническими:

  • Генерация отдельных клиентских и серверных артефактов
  • Генерация версии командной строки и версии веб-приложения
  • Отношения зависимостей модуля

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

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

2 голосов
/ 05 сентября 2010

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

Плюсы:

  • Позволяет лучше разделить проблемы.
  • Способствует модульному проектированию кода, обеспечивает его выполнение.
  • Предоставляет более точный контроль над тем, чтоВы «применяете» к каждой части.
  • Позволяет работать над частями кода в изоляции от других частей.
    • Использование бинарных зависимостей ускоряет компиляцию (против компиляции всего монолитного проекта).
  • Позволяет пользователям зависеть только от подразделов вашего приложения.

Минусы:

  • Если не нужно, несколько модулей вызовут больше обслуживания, чем монолитный проект.

Итак, Maven поддерживает и продвигает модульные сборки, это частьдизайн.А в некоторых случаях у вас даже нет выбора из-за одного (основного) артефакта на модуль золотого правила: если вы хотите распределить приложение как разные части или собрать несколько частейприложения (например, JAR-файл клиента и JAR-файл сервера или JAR-файлы в WAR-файле или некоторые EJB-JAR-файлы и WAR-файлы в EAR) вы должны создавать для них выделенные модули (Maven не может произвестиWAR и EAR от одного и того же модуля).

Подводя итог, можно сказать, что модульность вашей сборки каким-то образом определяется природой вашего приложения, она может просто потребоваться.Но если ваше приложение не является модульным по своей природе (скажем, вы разрабатываете свинг-клиент), вы можете использовать один модуль.Разделите его по мере необходимости, когда все станет слишком сложным, слишком большим.

0 голосов
/ 05 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...