如何使用gradle bnd(bndtools)将“嵌入式工件”部分添加到清单中?

hxzsmxv2  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(237)

我正在将一堆osgi包的构建从maven构建转换为gradle。构建的一部分包括使用bnd将一些jar嵌入到生成的jar中,以及在清单文件中生成特定的头。
现有的maven构建使用“maven bundle plugin”来实现这一点。这个插件有一个嵌入依赖项特性,它可以获取所需的依赖项并将它们(作为jar)嵌入到生成的jar中。它还会在清单文件中放置标题: Bundle-ClassPath 以及 Embedded-Artifacts . 还有其他事实上的头文件,但我指定的两个头文件是在试图让gradle输出与maven的输出匹配时引起问题的头文件。
我已经能够通过普通bnd(bndtools)和gradle实现其中的一部分,
例如,此bnd指令:

-includeresource: docker-java-core-3.2.5.jar; lib:=true

将嵌入jar docker-java-core-3.2.5.jar 并将其添加到bundle classpath manifest头中。我还没有找到一种方法让bnd包含可传递的depdencies,所以我手动指定它们,这很好。
但是,我找不到一种方法(使用纯bnd)将jar添加到manifest部分 Embedded-Artifacts 它是由maven构建生成的。
此部分以以下格式出现在清单中:

Embedded-Artifacts: docker-java-core-3.2.5.jar;g="com.github.docker-java";a="docker-java-core";v="3.2.5"

我想通过gradle使用bnd(bndtools)生成相同的工具。
[编辑]注解表明这个头是不必要的,并且不是osgi规范的一部分。如果是这样的话,为什么会包括它呢[/[编辑]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题