Прежде всего: мои знания Maven ограничены, поэтому, пожалуйста, потерпите меня. ;-) У меня есть простой проект Maven, в настоящее время состоящий из трех модулей. Модуль, содержащий ядро приложения, называется core (Creative name, huh? :-)), а остальные модули в основном являются плагинами для этого основного модуля. Есть одно ограничение: только один плагин может быть добавлен в основной модуль.
Базовый модуль имеет собственную конфигурацию Spring IoC за вычетом конфигурации плагина. Это довольно просто: код ядра будет читать бин с именем «плагин», который не определен в конфигурации ядра. Модули плагинов будут поставлять свои собственные файлы конфигурации, которые будут содержать компонент с именем «плагин», который затем используется основным кодом. Это идеально вписывается в мой случай использования.
Я хочу предоставить администратору, который развернет систему, простой способ создать дистрибутив, содержащий ядро, выбранный плагин и разумную конфигурацию по умолчанию. Может быть tar.gz
или что-то в этом роде. Я не хочу, чтобы он копал мои файлы Spring IoC, копировал их вместе и т. Д. И т. Д. Фактическая конфигурация, такая как порты TCP / IP, выполняется в файлах свойств.
Чтобы уточнить, что я имею в виду, я построил пример структуры. Обратите внимание, что имена файлов приведены только для пояснения.
/bin/core.jar [Build from core module]
/bin/plugin.jar [Build from a plugin module]
/lib-bin/library-required-by-plugin.jar [Dependency resolved by maven + copy]
/lib-bin/library-required-by-core.jar [Dependency resolved by maven + copy]
/lib-bin/another-library-required-by-core.jar [Dependency resolved by maven + copy]
/etc/spring/core-beans.xml [Copied from core module /etc/]
/etc/spring/plugin.xml [Copied from plugin module /etc/]
/etc/default-core-config.properties [Copied from core module /etc/]
/etc/default-plugin-config.properties [Copied from plugin module /etc/]
В настоящее время я возлюсь с плагином сборки, но, кажется, я обхожу круги и ничего не работает. Довольно расстраивает. Если вам нужна дополнительная информация или вы не поняли мою точку зрения, не стесняйтесь спрашивать. : -)
Дополнение, чтобы уточнить мой вопрос: как это сделать? (Ну, это так просто :-)) Как я уже говорил ранее, мои знания о Maven ограничены, и в настоящее время я никуда не денусь, даже если я знаю, что плагин сборки может быть подходящим вариантом. Особенно, как получить зависимости от каждого модуля, где настроить плагин (в родительском проекте?) И даже немного дескриптора сборки, очень поможет.
Спасибо за ваш вклад!