2010-10-10 2 views
3

У меня есть небольшой (4 модуля) проект maven с корнем pom в pom. Прямо сейчас у меня есть модуль impl, который содержит основные методы и настройки. Это приводит к некоторым проблемам, например, создание единой банки для всего проекта (возможно) огромного списка зависимостей, содержащего все модули, и путаницу, пытающуюся отследить основной метод для будущих разработчиков.Где я должен поместить основную реализацию в мультимодульный проект Maven?

Итак, я думаю: лучше ли использовать этот материал в корневом проекте или оставаться в его собственном модуле? Могут ли быть какие-либо недостатки, связанные с его внедрением (например, проблемы с плагинами)?

ответ

1

Это приводит к некоторым проблемам, например, строительство единой баночки для всего проекта

Есть решения для этого (например, с помощью специального модуля и Maven Assembly плагина или Shade плагина Maven) ,

(возможно) список

огромная зависимость, содержащая все модули,

Я не понимаю, что вы имеете в виду здесь.

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

Просто зарегистрируйте вещи, если никто не может передавать информацию.

Итак, я думаю: лучше ли использовать этот материал в корневом проекте или оставаться в его собственном модуле? Могут ли быть какие-либо недостатки, связанные с его внедрением (например, проблемы с плагинами)?

Стивен является правильным, агрегацию и/или родитель РОМ должен иметь упаковку типа pom, и вы не можете поместить любой код в них.

+0

«(возможно) огромный список зависимостей, содержащий все модули» означает, что модуль impl должен иметь зависимости почти ко всем модулям. Если проект maven становится большим, вы говорите огромный список зависимостей в модуле impl. – TheLQ

+0

@ TheLQ. Ну, да, модуль impl должен будет объявлять зависимости от его прямых зависимостей. Но я не уверен, что понимаю проблему. И я не уверен, что объявление зависимостей за пределами данного модуля сделает вещи «лучше». –

1

AFAIK, родительский модуль многомодульного проекта должен иметь тип «pom», что исключает возможность ввода в него какого-либо кода или других ресурсов.

Конечно, я бы не попробовал это.

Если вы хотите, чтобы все ваши классы и т. Д. Были собраны в один JAR, есть и другие способы сделать это. Например, посмотрите на Maven Shade Plugin.

Смежные вопросы