Создайте веб-приложение и его независимые плагины с Maven - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть веб-приложение, которое я назову core , к которому могут быть добавлены плагины (не maven-плагины), но оно должно работать и работать как отдельное веб-приложение. У нас есть плагин-lib, от которого зависит ядро, и от которого зависят также все плагины, разработанные для ядра.

Как это:

core    -> core-plugin-lib
plugins -> core-plugin-lib

Моя структура каталогов проста:

root/
    core/
        pom.xml
    core-plugin-lib/
        pom.xml
    pluginA/
        pom.xml
    pluginB/
        pom.xml

Моя первая проблема: могу ли я собрать ядро ​​или любой плагин, а также собрать зависимую библиотеку? Я читал о modules , но, как вы можете видеть, у lib есть 2 родителя. Что я действительно хотел бы, так это собрать ядро, а также собрать библиотеку ИЛИ если я собрал какой-либо плагин, я также хотел бы собрать библиотеку независимо. И помните также, что ядро ​​не зависит от какого-либо плагина.

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

На данный момент, когда я собираю плагин, он копирует себя в каталог / plugin внутри ядра, и у меня есть профиль распространения в ядре pom, чтобы скопировать существующие плагины из этого каталога внутрь войны веб-приложения. , Поэтому, когда я собираю ядро ​​без профиля, оно не копирует свои плагины, но когда я запускаю профиль распространения, да. Это работает, но это утомительно, так как мне нужно собрать lib, собрать плагины и собрать ядро.

Я хотел бы знать, существует ли какая-либо структура pom, которая могла бы решить двойную зависимость моей первой проблемы, и есть ли способ справиться со второй проблемой и создать плагины через ядро, даже если они не зависят. И, если возможно, если бы я мог решить вторую проблему в профиле, а не в отдельном помпе. Этот профиль использует maven-assembly-plugin для создания tar.gz со всем, что в нем упаковано. Я также хотел бы сохранить это, если это возможно.

1 Ответ

1 голос
/ 16 сентября 2011

Я читал о модулях, но, как вы можете видеть, у библиотеки есть 2 родителя.

Я думаю, вы имеете в виду, что у библиотеки есть 2 проектов, которые зависят от нее .Родитель означает что-то конкретное в Maven: POM, который наследуется другим.В этом случае, я думаю, что модули - это то, что вы ищете.

Что касается того, можете ли вы собрать библиотеку с ядром и плагинами, тогда да, это возможно.Это хорошая идея?Я бы сказал, нет.Плагин lib определяет контракт между плагинами и ядром.Как правило, вы хотите точно знать , от какой версии вы зависите, и это не обязательно самая последняя версия.Я бы порекомендовал вам сохранить версию библиотеки независимой от других проектов и создавать ее по мере необходимости.Затем пусть ваше ядро ​​и плагины зависят от версии в локальном (или удаленном) репозитории, на который вы нацелены.

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

Что касается второго вопроса, вы, безусловно, можете определить отдельное POM, которое объединит и ядро, и плагины вместе.Используйте ту же многомодульную технику.

...