Проекты знатока могут иметь несколько родителей?

Правовая оговорка: Я работаю на IBM и консультируюсь относительно WebSphere ESB, продукт IBM, разработанный для создания ESBs с. Следующее является моими мнениями и не обязательно отражает позицию IBM.

ESB является разными вещами для различных людей, к сожалению.

мне, ESB является любой технологией, которую можно вставить в SOA (Архитектура Для обслуживания широкого круга запросов), позволив Вам соединить разрозненные системы вместе. Это часто выполняет функции преобразования протокола, модификации сообщения, маршрутизации, входа, действия как шлюз безопасности, и так далее. Например, Вы могли бы использовать ESB для представления сервиса, ранее только доступного как веб-сервис как основанный на JMS сервис также.

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

57
задан Ondra Žižka 13 August 2019 в 14:26
поделиться

3 ответа

У проекта может быть только один родительский элемент (в отличие от множественного наследования в C ++), но этот родительский может быть частью более крупной родительской иерархии. Как указывали другие, у вас может быть что-то вроде этого:

base-pom/
|-- flex-base-pom
|   |-- my-plugin-client
|   |   `-- pom.xml
|   `-- pom.xml
|-- java-base-pom
|   |-- my-plugin-server
|   |   `-- pom.xml
|   `-- pom.xml
 `-- pom.xml

Тем не менее, я заметил, что вы написали, что ваша настоящая проблема заключается в следующем:

проекты flex наследуют конфигурацию, например, для javadoc и pmd, которая им не нужна .

Вы должны использовать элемент pluginManagement , чтобы избежать этой ситуации:

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

Итак, в родительском pom настройте свои плагины в pluginManagement (например, javadoc и pmd) и ссылайтесь на них в плагинах ] в желаемых дочерних элементах (здесь только в my-plugin-server). Это решит вашу текущую проблему.

и ссылаться на них в элементе plugins в желаемых дочерних элементах (здесь только в my-plugin-server). Это решит вашу текущую проблему.

и ссылаться на них в элементе plugins в желаемых дочерних элементах (здесь только в my-plugin-server). Это решит вашу текущую проблему.

33
ответ дан 24 November 2019 в 19:44
поделиться

Единственный способ - сделать base-pom родительским для java-base-pom и flex-base-pom.

У меня аналогичная структура для моих весенних проектов:

base-pom (basic configuration - eclipse, reports, repositories, etc)
|
+ spring-base-pom (spring definitions)
  |
  + spring-jar-base-pom (jar specific definitions)
  |
  + spring-war-base-pom (spring web and servlet dependencies)
    |
    + spring-webapp-base_pom (spring web mvc dependencies)
6
ответ дан 24 November 2019 в 19:44
поделиться

Просто представьте, что pom.xml на самом деле являются классами Java. : у вас может быть только один родитель (или расширяет класс), но этот родитель может также иметь другого родителя и т. д.

Как я объяснил здесь , вы должны различать принципы родительского и агрегационного Maven, что означает, что my-plugin будет рассматриваться как проект агрегации, а не обязательно родительский проект для my-plugin-client и my-plugin-parent.

Итак, подведем итог:

my-plugin определит базовый помп для всех ваших проектов. Затем вы создаете два новых проекта pom : java-base-pom и flex-base-pom . Оба они имеют родительский my-plugin . Сейчас,

2
ответ дан 24 November 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: