我正在使用 BndTools ( http://bndtools.org/ ) 来开发 OSGI 应用程序。一切正常,但在导出应用程序时我想更改一些内容。
我正在尝试实现两件事(我认为它们可能是相关的):
1: 将默认的 BndTools 启动器 ( aQute.launcher
) 替换为自定义启动器 (或有.JAR
格式)
如何摆脱或将默认 BndTools 启动器 (aQute.launcher) 更改为自定义启动器?
关于这个话题,我唯一能找到的是:http: //goo.gl/jYliih
启动器没有内置到 bnd 中,实际的启动策略是参数化的。通过将 JAR 放在
-runpath
. A.JAR
应该有一个 Launcher-Plugin 标头作为启动器。如果没有找到启动器,-runpath
则将使用内置的biz.aQute.launcher
。
原因是我需要我的应用程序接受命令参数而不干扰 aQute 启动器(就像所有 -run 参数一样)。另一方面,我想摆脱.bat/.sh
启动应用程序的批处理方法并使用单个.jar
文件来启动应用程序。
那可能吗?
2:自定义导出的文件结构
默认情况下,BndTools 在导出应用程序时会创建此文件结构:
jar/
-> 这是 OSGI jar 包文件夹
aQute/
-> 默认的 BndTools Launcher(Launcher.class 里面)
META-INF/
-> 为什么这里有一个 META-INF 文件夹?这不是 JAR
launcher.properties
-> 启动器属性
start.sh
--> 从此批处理文件启动 Launcher.class。
start.bat
/ 与 JAR 相比,这样做的好处在哪里?
基本上我想删除aQute
,META-INF
和start.*
文件并为二进制文件添加一个bin
文件夹。
这应该可以通过“Ant”、“Maven”或“Gridle”脚本来实现。但我可以只创建一个“BndTools 项目”或一个“Gradle 项目”而不支持 BndTools。我安装了“BndTools Gradle 插件”,但在任何地方都找不到关于此主题的任何有用文档。
希望有人可以帮助我或指出我正确的方向。问候。