Рефакторинг Maven проекта с наследованием и / или агрегацией - PullRequest
0 голосов
/ 28 августа 2018

Я прочитал много вопросов и ответов здесь на SO, но я не могу найти ответ, который рассеивает мои сомнения.

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

Я создал один проект maven для каждого связанного проекта, установил каждый из них в мой репозиторий и импортировал в MainProj со стандартным <dependency></dependency> импортом.

Я обнаружил наследование и агрегацию в Maven, но я не могу понять:

  • Подходит ли мой MyProject для этой структуры или стандартный импорт зависимостей является наилучшей практикой?

  • Я прочитал концепцию superPom (или родительского pom), но я не могу понять, как это работает: я должен создать автономный pom, не связанный с каким-либо Java-кодом, что управляет только детьми и другими связанными с ним помпами? Или что superPom должно быть, в моем примере, включенным в MainProj ?

  • В случае, если я должен импортировать мои связанные проекты с наследованием или с агрегацией?

Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете подойти к этому вопросу двумя способами.

1) ParentPOM (СуперПОМ)

2) Мультимодульный проект Maven

Супер ПОМ

Super POM (Parent POM) используется для структурирования проекта, чтобы избежать избыточности или дублирования конфигураций с использованием наследования между файлами pom. У вас есть отдельный проект для родительского POM, и все общие зависимости и плагины должны быть добавлены. Затем в дочернем проекте необходимо добавить родительский идентификатор POM

<parent>
    <groupId>com.parent.demo</groupId>
    <artifactId>MavenExamples</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

Например: https://howtodoinjava.com/maven/maven-parent-child-pom-example/

Мультимодульный проект

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

Например: http://www.codetab.org/apache-maven-tutorial/maven-multi-module-project/

Ссылка: Как структурировать мультимодульный проект Maven для его немедленной компиляции?

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