首页 / 知识
如何管理OSGi构建依赖关系?
2023-04-13 05:21:00

How can I manage OSGi build dependencies?我们已经将OSGi运行时(Equinox)嵌入到自定义的客户端-服务器应用程序中,以方便插件开发,到目前为止,一切都很好。由于内置的??清单编辑器,依赖项管理和导出向导,我们一直在使用Eclipse构建插件。使用Eclipse进行管理器构建不利于通过Hudson进行持续集成。 我们有依赖于其他OSGi捆绑包的OSGi捆绑包。我真的很讨厌在自定义ANT构建中对构建顺序进行硬编码。我们已经做到了这就是过去,这太可怕了。如果没有自动解决OSGi依赖关系,是否有任何构建工具可以轻松管理OSGi依赖关系?是否有关于此的DECENT示例? 澄清: 生成的构建脚本只能通过Eclipse使用。他们需要手动运行Eclipse。我们还提供了一些Eclipse构建所没有的标准目标,并且我不想修改生成的文件,因为我可能会重新生成(我知道我可以做到包括在内,但是我想避免所有Eclipse gen文件一起) 这是我的项目布局:
在使用Eclipse PDE时,每个插件都有一个Manifest,但是没有build.xml,因为PDE为我做了。使用Hudson很难自动化GUI驱动的过程。我想设置自己的build.xml来构建每个,但是存在依赖关系和构建顺序问题。这些问题是由清单文件(描述OSGi导入)驱动的。例如,PluginC依赖于PluginB,而后者依赖于PluginA。它们必须以正确的顺序构建。我意识到我可以手动控制构建顺序,因此我正在寻找一种工具来帮助自动化构建顺序依赖性管理。 一路Maven2;有一个名为m2eclipse的Eclipse插件可以帮助管理它,可以完全解决依赖问题,然后解决一些问题。有一本免费的在线书籍作为文档。 专门研究将多个组件捆绑在一起的多模块项目,并让Maven制定出构建顺序和依赖性。 还有关于Eclipse集成的一章。 那只是Eclipse和Maven,接下来您将获得一些OSGi的好东西:
从根本上说,Maven模块模型与OSGi的捆绑软件模型完全吻合。三年多来,我们一直在使用Maven构建和管理具有数百个捆绑包的多种产品,这很棒。 调教Maven2。查看用于构建的Tycho插件-它们使用Eclipse的JDT编译器,因此它在编译时实现所有OSGi规则,就像Eclipse在运行时一样。 另外,Apache Felix BND插件似乎也很流行。我喜欢Tycho,因为它似乎更紧密地统一了Maven和Eclipse开发环境。 PDE无头构建。 Eclipse对其进行了充分的记录。如果您要构建Eclipse插件,并且想通过命令行来实现,那么Eclipse PDE无头构建是您的最佳选择。 解决一些老问题... 由于缺乏网络连接和时间安排,我们的设置不利于Maven。我知道有离线Maven设置,但考虑到时间,一切都太多了。希望当我们有时间重组构建过程时,将使用适当的设置。 该解决方案涉及Ant,BND和一些自定义ant任务。各种捆绑包依赖关系是手动管理的。我们已经在使用Ant; BND和自定义任务将它们捆绑在一起。自定义任务只是确保我们的bnd / eclipse项目是同步的。 我们使用巴克敏斯特。这是一个构建和组装框架,负责解决依赖项的解析,从各个存储库中获取数据,构建和包装产品。 这是一个Eclipse Tools项目。它与PDE集成良好。 这意味着我们用于构建RCP的所有元数据对Buckminster进行解析和构建非常有用。例如,feature.xml和Manifest.MF.product中的Require-Bundle标头。 现在每个捆绑包中都没有任何构建脚本。现在,每个产品只有一个版本。 Buckminster小心行走依赖图。 尽管我们的现有巡航控制/蚂蚁系统(Buckminster团队)已经开始使用Hudson来托管项目本身,但还是花了点力气。我相信他们的构建设置也可以下载。 尽管它还处于起步阶段,但我们对它确实印象深刻。 我们也研究了Pax-Construct,但是我们不想使用Maven。 我们目前还在寻找Spring DM测试框架,以增加单元测试的工作量。 Maven不需要互联网连接! 为了基督的缘故,请使用-o开关。 我使用Maven 3.0.2 mvn generate:archetype
参见http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html 要将您的依赖项添加到捆绑软件中,请使用pom.xml中的此简短示例
要么
我们将Hudson与PluginBuilder结合使用来构建基于Eclipse的OSGi捆绑软件/插件。这是基于Eclipse的标准PDE流程来构建插件的。这意味着使用Eclipse作为编译器。 您能详细说明出现问题的地方吗?您提到了OSGi捆绑包依赖性。这是在运行时吗?还是在编译时?在第一种情况下,您应考虑声明式服务(请参阅OSGi规范)。 |
最新内容
相关内容
怎么在Python装饰器中自定义功能呢
怎么在Python装饰器中自定义功能呢?,代码,包装,环境,名称,工具,名字,变动,业务,主体,面临,setattr和getattr操作首先我们来看下setattr和geta怎么计算python程序运行时间
怎么计算python程序运行时间,时间,培训,程序,方式,脚本,下面,以上,两个,结束,不是,python脚本使用统计时间的方式是time.clock(),而这种方式统Python怎么运行shell脚本
Python怎么运行shell脚本,培训,命令,文件,方法,脚本,文件夹,对象,建议,结果,内容,Python作为一门脚本语言,有时候需要与shell命令交互式使用,在Mac终端下直接运行Python的.py程序
Mac终端下直接运行Python的.py程序,位置,培训,终端,文件,注释,权限,继续,程序,空格,文件名,1.在文件中添加注释首先在你所要运行的python文件python代码运行需要编译吗
python代码运行需要编译吗,代码,培训,做好,体系,平台,语言,机器码,目标,厨师,下次,有人在讨论Python代码是编译执行还是解释执行?这个问题还如何获取当前运行python文件路径
如何获取当前运行python文件路径,名字,培训,路径,脚本,绝对路径,文件,指令,模块,定义,所在,获取当前执行主脚本方法:sys.argv[0]和_file_(1)sypython如何在linux下运行python
python如何在linux下运行python,培训,绝对路径,文件,程序,这个地方,头部,文本,上面,以上,时候,Linux下运行python有两种方式:1、直接使用pythopython怎么在cmd运行文件夹
python怎么在cmd运行文件夹,培训,路径,文件夹,文件,以上,程序,方法,更多,内容,python是一门高级测面向对象的程序设计语言。运行Python,可在python cmd中怎么运行python文件
python cmd中怎么运行python文件,培训,文件,路径,以上,程序,方法,更多,内容,运行Python,可在交互模式下运行,或者命令行中。命令行中运行的是pythonid函数如何运行
pythonid函数如何运行,培训,地址,代码,对象,函数,内存,类型,可能会,整数,字符串,id(object)功能:返回的是对象的“身份证号”,唯一且不变,但在不python怎样启动python程序运行
python怎样启动python程序运行,代码,环境,项目,工具,培训,业务,有限,程序,源文件,功能,执行Python程序的三种方式解释器——python/python3交python用哪个软件编写运行python
python用哪个软件编写运行python,软件,环境,代码,培训,服务,分析,工具,功能,程序,系列,编写和运行Python代码的软件叫IDE,也就是集成开发环境