如何使用bnd

时间:2019-02-05 14:57:32

标签: java osgi bnd

我已经成功使用独立的bnd工具从jar文件创建OSGi捆绑包。

现在,我想从.class文件开始创建一个包。 通过查看一些官方的bnd文档,我找不到任何可以做到这一点的东西。 我想我正在寻找类似-classpath: output.jar的东西,该东西可以用于.class文件。

2 个答案:

答案 0 :(得分:3)

如果我了解您要执行的操作,则可以选择一种方法来建立一个Maven项目并按照here所述利用bnd-maven-plugin。基本上,在pom的build / plugins部分中添加以下代码段就足够了:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
        </archive>
    </configuration>
</plugin>
<plugin>
    <groupId>biz.aQute.bnd</groupId>
    <artifactId>bnd-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>bnd-process</goal>
            </goals>
        </execution>
    </executions>
</plugin>

有关基于Maven的方法的完整示例,请访问OSGi enRoute网站:https://enroute.osgi.org/Tutorial/

答案 1 :(得分:1)

有不同的选项:Workspace bndtools(包括Gradle构建),Standalone Gradle,Maven和bnd Standalone。我强烈喜欢Bndtools工作区模型,因为它对用户最友好。大量的支持,不带任何额外工作的gradle的完全保真,交互式调试,远程调试,打包和活动社区。它基于Eclipse。

以下链接应该可以帮助您入门:

更新

如果您只想使用bnd命令行,则可以简化很多事情,但是还需要多做一些事情。您会错过bndtools的美好世界:-(

即使那样,您仍然可以选择。 bnd可用于构建工作区模型设置。在这种情况下,您将遵循bndtools工作区教程等的规则。在该模型中,您可以在工作区或项目目录中使用bnd生成,编译和许多其他命令。

如果您还想跳过这些内容,则最终得到的bnd只能从bnd属性文件生成JAR。在这种情况下,您必须使用以下命令指定所有依赖项:

-classpath bin/,jar/a.jar, jar/b.jar

然后您可以使用所有Builder指令。

-includeresource
Private-Package
Export-Package
-exportcontents
...

所有包标头等。大多数验证和构建应与Bndtools工作区示例相似。当然,您会错过启动和许多其他功能。但是,我听说有人用这种方式构建了大型代码库...

以下网址显示了如何使用此示例:https://bnd.bndtools.org/chapters/160-jars.html