1
我有一个OSGI
包,它依赖于第三方库,我不想在容器中部署该库,我宁愿将它嵌入到我的包中。在OSGI中嵌入传递依赖关系
当然,该库有它自己的依赖关系,我也想嵌入它们。
我使用的Maven Bundle Plugin
:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Description>${project.description}</Bundle-Description>
<Bundle-Vendor>${bundle.vendor}</Bundle-Vendor>
<Meta-Persistence>...</Meta-Persistence>
<Export-Package>...</Export-Package>
<Import-Package>...</Import-Package>
<Embed-Dependency>3rd-Party</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
</instructions>
</configuration>
</plugin>
结果,3rd-Party
嵌入所产生的捆绑,而不是它的传递依赖,仿佛<Embed-Transitive>true</Embed-Transitive>
没有任何效果。
所以我有一些问题
- 这是一个过渡的方式嵌入第三方库的正确方法是什么?
- 这是否照顾生成的Manifest文件(不导入属于第三方库及其依赖项的包)?
谢谢
Hello Christian,所以你认为指定第三方库的确切名称存在问题? – isco
至于嵌入的软件包的导入,当我嵌入依赖关系时,导入的软件包列表增长非常快,我认为这个插件没有处理这个问题 – isco
许多库的一个大问题是它们使用了很多可选依赖。如果你只是简单地嵌入这样一个库,那么你也可以得到可选的代码。这样的树可以长得很快。如果这是你的情况,你知道你不需要一些可选的代价,那么你可以尝试在maven中排除它们。 –