Как обновить пакет из артефакта Maven с помощью Apache Felix

В настоящее время у меня есть ситуация, когда я разрабатываю проект, затем запускаю mvn install и он помещается в мой локальный репозиторий Maven в виде простого файла JAR

Затем у меня есть созданная другими ребятами "среда", которая включает в себя множество пакетов и прочее, и в конечном итоге запускается через mvn pax:run и это займет около 5 минут, чтобы бежать

Я хотел бы иметь возможность просто бежать felix:update <bundle-name> но я не могу заполнить пробел между артефактом JAR Maven в локальном репозитории Maven и пакетом, готовым для предоставления, который я мог бы поместить куда-нибудь, чтобы просто запустить felix:update или что угодно, может быть uninstall/install

Когда я пытаюсь бежать mvn pax:create-bundle с моим проектом, он бросает Containing project does not have packaging type 'pom' исключение

Любая помощь высоко ценится

ОБНОВЛЕНИЕ: я заметил, что проблемы с переустановленным пакетом начинаются в его активаторе, с ClassNotFoundException (хотя упомянутый класс есть и всегда присутствует в пакете, поэтому он должен иметь проблему с classpath, установкой ClassLoader или чем-то еще)

at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation BundleWiringImpl.java:1574 at org.apache.felix.framework.BundleWiringImpl.access$400 BundleWiringImpl.java:79 at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass BundleWiringImpl.java:2018 at java.lang.ClassLoader.loadClass ClassLoader.java:357 at some.external.adapters.package.guice.SomeModule.configure SomeModule.java:46 at com.google.inject.AbstractModule.configure AbstractModule.java:59

2 ответа

Решение

Если у вас есть путь к файлу, который является недавно созданным пакетом, вы можете обновить его из оболочки Gogo следующим образом:

felix:update <bundleid> file:/path/to/file
refresh

куда <bundleid> это числовой идентификатор пакета, который вы хотите обновить. refresh команда необходима, если какие-либо пакеты зависят от импортируемых пакетов или импортируются из них; эта команда заставит Framework попытаться повторно разрешить их, используя новую зависимость.

Я рад принять ответ @neil-bartlett, хотя мне нужно добавить еще немного контекста:

1) одна из самых больших проблем, которые у меня были изначально, заключается в том, что JAR-файл в локальном репозитории Maven НЕ ЖЕ, как комплект OSGi. Для того, чтобы создать пакет, мне нужно было запустить mvn bundle:bundle ПОСЛЕ mvn install, И пакет был создан в target/ папка.

2) после этого в оболочке GoGo я действительно мог запустить felix:update <bundle-id> file:C:/Users/blablabla/bundle-SNAPSHOT-2.0.jarи по некоторым причинам в наши дни это просто работает. Исключения, упомянутые в обновлениях к исходному сообщению, действительно имеют место, но они не препятствуют правильной установке обновленного пакета.

Другие вопросы по тегам