Создание подключаемого проекта с Maven - PullRequest
0 голосов
/ 04 января 2011

В настоящее время я работаю над проектом веб-приложения на Java, который мне необходимо расширить, чтобы добавить дополнительные функциональные возможности, но без изменения исходной базы кода.Поэтому веб-приложение должно переслать новые запросы в другой jar-файл, который их обработает.Проблема в том, что нам нужно, чтобы jar был подключаемым, чтобы мы могли заменить его или добавить больше jar как больше плагинов в проект без необходимости изменять исходную базу кода, в том числе не меняя файл maven pom.xml для каждого нового jar (плагин)) поэтому я не могу жестко запрограммировать зависимость от этого jar-файла в pom-файле

Так есть ли способ настроить профиль maven во время упаковки моего проекта, чтобы указать maven, какие плагины выбрать?

Ответы [ 2 ]

1 голос
/ 04 января 2011

Разве вы не хотели бы иметь возможность подключать банки во время выполнения (не только во время сборки)?Я бы порекомендовал систему, где вы создаете свое веб-приложение отдельно.Затем вы создаете плагин jars как отдельные проекты.Во время выполнения определите папку в файловой системе, в которой вы будете искать jar плагина, а затем создадите экземпляр UrlClassLoader для доступа к классам в этих jar.

0 голосов
/ 03 августа 2017

Извините за столь поздний ответ, но у нас также были аналогичные требования, поэтому мы создали проект с четырьмя maven

  1. Один из них - ваш основной проект, в котором вы хотите иметь подключаемую природу.

  2. Вторым будет интерфейс, который будет объявлять набор классов интерфейса, который подключаемые плагины должны будут реализовать для вызова в основном проекте.

  3. В-третьих, это будет проект сборки POM, который будет выступать в качестве родительского проекта для всех пользовательских плагинов как модуль в pom.xml, аналогичный зависимости проекта начальной загрузки.Любой новый плагин, который необходимо создать, будет иметь этот POM-проект в качестве родительского проекта. Этот проект в основном является вспомогательным проектом для CICD, так что наши пользовательские плагины jar собираются и помещаются в наш пользовательский репозиторий
  4. Это будетэталонный проект, содержащий все пользовательские плагины в качестве зависимостей в своем pom.xml, и эта информация о проектах будет в основном проекте, так что при сборке основного проекта все пользовательские плагины станут classpath основного проекта

Ваш основной родительский проект плагина будет иметь ссылку на второй интерфейсный плагин в качестве зависимости в своем pom.xml, чтобы пользовательские плагины могли реализовать интерфейс. У него также будет ссылка на четвертый проект, так что все пользовательские плагины находятся вclasspath нашего основного проекта.

Теперь, когда вы собираете родительский проект POM, все пользовательские плагины будут собраны в виде jar и сохранены в папке ur .M2.

Теперь, чтобы получить доступ к этимпользовательские плагины в вашем главномпроект, вам нужно иметь ссылку на интерфейсную ссылку в pon.xml как зависимости, и теперь сборка будет

  1. . Для установки mvn проект интерфейса
  2. Для установки mvn родительский.pom project
  3. Для mvn установите четвертый проект
  4. Для mvn установите основной проект

После сборки четвертого проекта у вас будут все пользовательские плагины в вашемclasspath вашего основного проекта.Затем вы можете использовать класс загрузчика служб или метод поиска netbeans для загрузки всего класса, который реализует интерфейс, определенный в проекте интерфейса.

...