首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换BndTools默认启动程序并更改导出文件结构

如何替换BndTools默认启动程序并更改导出文件结构
EN

Stack Overflow用户
提问于 2016-02-23 21:48:09
回答 1查看 578关注 0票数 6

我正在使用BndTools (http://bndtools.org/)来开发OSGI应用程序。一切都很好,但我有一些东西,我想改变,同时导出我的应用。

我正在努力实现两件事(我认为它们可能是相关的):

1:将默认的BndTools启动程序(aQute.launcher)替换为自定义的启动程序(或以.JAR格式设置)

如何将默认的BndTools启动程序(aQute.launcher)删除或更改为自定义启动程序?

我在这个话题上唯一能找到的就是:http://goo.gl/jYliih

发射器没有内置到bnd中,实际的发射策略是参数化的。通过在-runpath上放置JAR,启动程序与bnd或bndrun文件相关联。一个.JAR应该有一个启动插件头作为一个启动程序.如果在-runpath上没有找到启动程序,那么将使用内置的biz.aQute.launcher

原因是我需要我的应用程序来接受命令args,而不是干扰aQute启动程序(就像所有-run args一样)。另一方面,我想摆脱启动应用程序的批处理.bat/.sh方法,并使用单个.jar文件启动应用程序。

这有可能吗?

2:自定义导出的文件结构

默认情况下,BndTools在导出应用程序时创建此文件结构:

jar/ -> --这是OSGI包文件夹

aQute/ ->默认BndTools启动程序(Launcher.class The )

META-INF/ ->为什么这里有一个META文件夹?不是罐子

launcher.properties ->发射器属性

start.sh -->从这个批处理文件中释放Launcher.class。

start.bat /与JAR相比,这有什么好处?

基本上,我希望删除aQuteMETA-INFstart.*文件,并为二进制文件添加一个bin文件夹。

这应该可以通过一个"Ant“、"Maven”或"Gridle“脚本来实现。但是我可以创建一个没有BndTools支持的"BndTools项目“或”分级项目“。我安装了"BndTools Gradle插件“,但是在任何地方都找不到关于这个主题的任何有用文档。

希望有人能帮我,或者为我指明正确的方向。欢迎光临。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-29 10:06:57

(这个问题也出现在bndtools组列表中)

我有点困惑,因为你的愿望似乎得到了满足。您可以将bndrun文件导出到单个可执行JAR。在bndtools程序中,您可以通过获取对象服务和“launcher.arguments”服务属性来访问命令行参数。这是最初的String[]给出的主要方法的发射器。

代码语言:javascript
复制
@Reference(target=“(launcher.arguments=*)”)
void setArgs( Map<String,Object> args ) {
    … = (String[]) args.get( “launcher.arguments”;
}

导出的JAR是一个可执行的JAR。JPM可以轻松地将其转换为本地可执行文件。

代码语言:javascript
复制
jpm install -n mycode mycode.jar

您可以从https://github.com/bndtools/jpmcli安装jpm。

罗伯特:谢谢,参数代码片段正是我所需要的。

关于文件夹结构:

我需要我的包才能更新。如果我将所有的包嵌入到.Jar中,那么就不可能更新它们。我只需要打包发射器,同时把包放在外面。

BndTools有两个导出选项。在这里,您可以嵌入整个发射器和所有捆绑在一个罐子内。或者选项2是让包位于lib目录中,并通过shell脚本(start.bat、start.sh)启动它们。我在寻找一个没有壳脚本的解决方案。

Peter:,即使包在里面,只要不清除框架的存储区域,仍然可以更新它们。例如,您可以轻松地包含File,并从一个目录加载包,或者使用另一个管理代理Apache。

在我看来,当前的JAR导出(实际上我非常不喜欢目录导出,它很混乱)是尽可能好的。它有一个非常好的版本模型,只是一个文件,易于版本和更新。使用JPM,您可以在任何系统上安装它。

所以如果你想要别的东西,你必须创建你自己的出口商…

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35588905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档