使用BND嵌入第三方JAR

Sak*_*ket 7 ant osgi apache-felix bnd

我有一个使用ANT和经典BND工具构建的OSGi包.我的bundle在内部使用了一个库(JAR),它在我的OSGi容器(Apache Felix)中不能作为一个包使用.所以,我试图将它嵌入我的包中,以便在运行时访问.

如何使用ANT + BND嵌入这样的库/ JAR?(注意:我不能使用MAVEN,使用它可能会容易得多)

Nei*_*ett 12

您的bnd描述符中需要两条指令.首先使用Include-Resource将目标JAR包含到您的包中:

Include-Resource: foo.jar
Run Code Online (Sandbox Code Playgroud)

然后你需要指定foo.jar需要在bundle类路径上.我假设bundle内容本身也需要成为bundle classpath的一部分,所以我们需要将它包含在一个点中:

Bundle-ClassPath: ., foo.jar
Run Code Online (Sandbox Code Playgroud)

请注意,@ seh关于将JAR包压入捆绑包的答案Private-Package也是正确的(在这种情况下,JAR需要在构建时类路径中可见).我永远不会用Export-Package它,因为我认为捆绑应该严格控制它们的输出量.