领先一步
VMware 提供培训和认证,助您加速进步。
了解更多在早些时候的博客中,Ben 介绍了 Bundlor,其背后的概念以及如何在命令行、ANT 和 Maven 中使用它。在这篇文章中,我将展示如何在 Eclipse 环境中使用 Bundlor。
在开发基于 OSGi 的应用程序时,一些用户不想花时间不断更新他们的MANIFEST.MF,而是希望专注于应用程序组件中的实际业务逻辑:在这种情况下,Bundlor Eclipse 集成将确保MANIFEST.MF文件反映了项目中代码构件所表达的实际依赖关系,无需在Eclipse中手动管理类路径设置。此外,BundlorEclipse还可以通过在Eclipse中引入仅用于测试的源文件夹和名为TEST.MF的第二个清单文件来帮助清晰地区分运行时依赖关系和测试依赖关系,以指定单元测试类的依赖关系。
如果Bundlor在Eclipse中运行,它将使用基于Eclipse JDT创建的抽象语法树(AST)的源代码扫描来处理Java源文件。这使得Bundlor可以在没有现有项目类路径的情况下,并且从非编译、部分Java代码中创建清单文件。此外,Bundlor支持的所有其他资源(目前是Spring配置文件、Hibernate和JPA映射文件)也可以在Eclipse中进行处理。
在Eclipse内部使用时,Bundlor支持增量创建和更新清单文件。这在开发过程中非常有用,因为此时只有一组源代码构件发生了变化。Bundlor届时将只更新属于已更改资源的那些头信息,而不是重新处理整个项目。
如果您不希望Bundlor在后台运行以在资源更改时自动更新清单,或者您希望对清单何时更新有更多控制,Eclipse集成提供了一个按需启动Bundlor的操作。
除了生成主MANIFEST.MF文件之外,BundlorEclipse还能够创建一个TEST.MF文件,用于纯粹的测试依赖关系。为了支持这一点,Eclipse Java项目中的源文件夹可以被标记为仅用于测试。Bundlor将处理这些仅用于测试的文件夹,并将检测到的依赖关系添加到TEST.MF.
文件中。BundlorEclipse可以用于任何具有SpringSource OSGi Bundle项目性质的Eclipse Java项目。请注意,这不需要使用Bundle Classpath Container。
要测试Bundlor,您可以使用New Bundle Project Wizard创建一个新项目。该向导将确保满足运行Bundlor的所有先决条件。如果您想在现有项目中使用或测试Bundlor,请按照以下步骤操作:
BundlorEclipse可以与dm Server Tools中的Bundle Classpath Container一起使用。可以在任何OSGi bundle项目的上下文菜单中启用和禁用类路径容器。在此设置中,当MANIFEST.MF或TEST.MF文件被Bundlor更改时,容器将自动更新类路径。典型的开发人员工作流程可能如下所示:
只有当依赖关系被添加或从源代码构件中移除,或者源代码构件本身被移除/移动时,步骤4到6才会执行。
当然,BundlorEclipse可以与其他任何类路径容器(例如Maven Classpath Container)一起使用:如果您想使用Maven插件,如m2eclipse或Q4E,您可以移除Bundle Classpath Container(Spring Tools -> Disable Bundle Classpath Container)并为项目启用Maven支持。在这种“Artifact-First”方法中,Bundlor只会管理MANIFEST.MF;类路径将由Maven插件控制。
请注意,在此阶段,Bundlor没有任何检测到的依赖关系之间的同步功能,MANIFEST.MF和一个pom.xml:Bundlor不会自动将检测到的依赖关系添加到pom.xml。这在产品待办事项列表中,并很可能在后续版本中得到解决。
BundlorEclipse作为dm Server Tools 1.1.3.M1的一部分提供,该工具在Eclipse Public License v1.0下授权。您可以从我们的统一更新站点安装dm Server Tools:
http://www.springsource.org/update/e3.4
如果您遇到任何问题,请随时在我们dm Server Tools社区论坛中为Bundlor项目打开一个JIRA。由于Bundlor和BundlorEclipse是新产品,我们很乐意在我们的dm Server Tools社区论坛上讨论它们。