如何使用 bnd 指定 class 个文件

How to specify class files with bnd

我已经成功地使用独立的 bnd 工具从 jar 文件创建了一个 OSGi 包。

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

如果我理解您正在尝试做什么,一种选择可能是设置 Maven 项目并利用 bnd-maven-plugin 所描述的 here。基本上,在 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/

有不同的选项:Workspace bndtools(包括 Gradle build)、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 工作区示例类似。当然,您会错过启动和许多其他功能。但是,我听说有人用这种方式构建了一个大型代码库...

下面的 URL 展示了一些如何使用它的例子:https://bnd.bndtools.org/chapters/160-jars.html