У меня возникают проблемы с MANIFEST.MF, сгенерированным плагином maven-bundle. По какой-то причине, когда у меня есть номера версий, перечисленные в поле <Import-Package>
, инфраструктура OSGi не загружает мой пакет.Как исключить номера версий из Import-Package с помощью maven-bundle-plugin?
Я экспериментировал и замечал, что если я удалю номера версий в манифесте, то пакет правильно загрузится.
Как я могу указать maven-bundle-plugin, чтобы пропустить номера версий?
В настоящее время он производит:
Import-Package: com.ghc.ghTester.expressions,org.apache.ws.security.proc
essor;version="[1.5,2)",org.apache.ws.security;version="[1.5,2)",org.ap
ache.ws.security.message;version="[1.5,2)",org.apache.ws.security.compo
nents.crypto;version="[1.5,2)",org.apache.ws.security.message.token;ver
sion="[1.5,2)"
Но мне нужно, чтобы произвести:
Import-Package: com.ghc.ghTester.expressions, org.apache.ws.security.proc ESSOR , org.apache.ws.security, org.apache.ws.security.message, org.apache. ws.security.components.crypto, org.apache.ws.security.message.token
Мой плагин конфигурации является:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.0.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${pom.groupId}.${pom.artifactId};singleton:=true</Bundle-SymbolicName>
<Bundle-Name>${pom.name}</Bundle-Name>
<Bundle-Version>${pom.version}</Bundle-Version>
<Bundle-ClassPath>{maven-dependencies},.</Bundle-ClassPath>
<Embed-Dependency>*;scope=compile</Embed-Dependency>
<Export-Package/> <!-- nothing for this bundle to export -->
<Import-Package>com.ghc.ghTester.expressions,org.apache.ws.*</Import-Package>
</instructions>
</configuration>
</plugin>
Если я пытаюсь загрузить его с версией, я получаю следующее сообщение об ошибке :
org.osgi.framework.BundleException: Could not resolve module: com.rit.message-level-security [978]
Unresolved requirement: Import-Package: org.apache.ws.security; version="[1.0.0,3.0.0)"
at org.eclipse.osgi.container.Module.start(Module.java:434)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
at com.ghc.ghTester.Activator.installTempBundle(Activator.java:157)
Непростая практика опускания версии. какая у вас ошибка при развертывании пакета? вы не можете использовать версию, развернутую вашими зависимостями? –
Я понимаю, что это не очень хорошая практика, но это очень ограниченный плагин, который будет использоваться в очень ограниченной структуре. Рамка полностью вышла из-под контроля, и я даже не вижу сообщения об ошибках, когда пытаюсь загрузить свой пакет. Из проб и ошибок я заметил, что это номера версий, которые вызывают проблемы, а самый простой способ обойти это - отказаться от версий. –
Если вы используете felix, вы можете использовать команду 'export' в оболочке gogo, чтобы найти версию экспортируемого пакета? Я не думаю, что можно опустить версию с помощью этого плагина.возможно, что-то вроде 'version = [0,9)' может работать, но это действительно уродливо и побеждает цель управления зависимостями osgi. –