Извините за столь поздний ответ, но у нас также были аналогичные требования, поэтому мы создали проект с четырьмя maven
Один из них - ваш основной проект, в котором вы хотите иметь подключаемую природу.
Вторым будет интерфейс, который будет объявлять набор классов интерфейса, который подключаемые плагины должны будут реализовать для вызова в основном проекте.
- В-третьих, это будет проект сборки POM, который будет выступать в качестве родительского проекта для всех пользовательских плагинов как модуль в pom.xml, аналогичный зависимости проекта начальной загрузки.Любой новый плагин, который необходимо создать, будет иметь этот POM-проект в качестве родительского проекта. Этот проект в основном является вспомогательным проектом для CICD, так что наши пользовательские плагины jar собираются и помещаются в наш пользовательский репозиторий
- Это будетэталонный проект, содержащий все пользовательские плагины в качестве зависимостей в своем pom.xml, и эта информация о проектах будет в основном проекте, так что при сборке основного проекта все пользовательские плагины станут classpath основного проекта
Ваш основной родительский проект плагина будет иметь ссылку на второй интерфейсный плагин в качестве зависимости в своем pom.xml, чтобы пользовательские плагины могли реализовать интерфейс. У него также будет ссылка на четвертый проект, так что все пользовательские плагины находятся вclasspath нашего основного проекта.
Теперь, когда вы собираете родительский проект POM, все пользовательские плагины будут собраны в виде jar и сохранены в папке ur .M2.
Теперь, чтобы получить доступ к этимпользовательские плагины в вашем главномпроект, вам нужно иметь ссылку на интерфейсную ссылку в pon.xml как зависимости, и теперь сборка будет
- . Для установки mvn проект интерфейса
- Для установки mvn родительский.pom project
- Для mvn установите четвертый проект
- Для mvn установите основной проект
После сборки четвертого проекта у вас будут все пользовательские плагины в вашемclasspath вашего основного проекта.Затем вы можете использовать класс загрузчика служб или метод поиска netbeans для загрузки всего класса, который реализует интерфейс, определенный в проекте интерфейса.