Ответ 1
Модуль - это всего лишь способ организации вещей.
В многомодульной сборке вы можете построить целые дерево артефактов за один шаг (вспомните Joel Test). Тем не менее, каждый из них будет отдельным артефактом, который может быть индивидуально обозначен как зависимость.
Вот пример макета, упаковка в круглых скобках.
root (pom)
- project1 (jar)
- project2 (war) -> references project1 as dependency
- project3 (jar)
- project4 (war) -> references project3 as dependency
- project5 (ear) -> references project2 and project4 as dependency
вызвать mvn install
в корневом каталоге, чтобы построить все дерево.
Предполагается, что проект1 используется только проектом2, а project3 используется только проектом4. В противном случае это более сложный сценарий.
root (pom)
- project1 (jar)
- project2 (jar)
- project3 (war) -> references project1 and project2 as dependency of scope provided
- project4 (war) -> references project1 and project2 as dependency of scope provided
- project5 (ear) -> references project1 through project4 as dependency
Итак, модули отнимают работу по созданию нескольких проектов независимо, но вам все равно нужно самостоятельно управлять своими зависимостями.