领先一步
VMware 提供培训和认证,助您快速前进。
了解更多在之前的一篇博客中,Ben 介绍了 Bundlor、其背后的概念以及如何通过命令行以及在 ANT 和 Maven 中使用它。在这篇文章中,我将展示如何在 Eclipse 环境中使用 Bundlor。
在开发基于 OSGi 的应用时,一些用户不想花费时间不断更新他们的MANIFEST.MF,而是希望专注于应用组件中的实际业务逻辑:在这种情况下,Bundlor 的 Eclipse 集成将确保MANIFEST.MF文件反映项目中代码构件所表达的实际依赖关系,并消除了在 Eclipse 中手动管理类路径设置的需要。此外,BundlorEclipse 可以通过在 Eclipse 中引入 test-only 源代码文件夹和第二个清单文件(称为)来帮助将运行时依赖项与测试依赖项 cleanly 分开。TEST.MF来指定单元测试类的依赖项。
如果 Bundlor 在 Eclipse 中运行,它将使用基于由 Eclipse JDT 创建的抽象语法树的源代码扫描来处理 Java 源文件。这使得 Bundlor 能够在没有现有项目类路径的情况下,以及从非编译的、部分的 Java 代码创建清单文件。此外,Bundlor 支持的所有其他资源(目前包括 Spring 配置文件、Hibernate 和 JPA 映射文件)也在 Eclipse 中进行处理。
在 Eclipse 内部使用时,Bundlor 支持清单文件的增量创建和更新。这在开发期间很有用,当只有一组源代码构件发生变化时,Bundlor 将只更新属于已更改资源的那些头值,而不是重新处理整个项目。
如果您不想让 Bundlor 在后台运行以在资源更改时自动更新清单,或者您想更精细地控制何时应该更新清单,Bundlor 的 Eclipse 集成提供了一个按需启动 Bundlor 的操作。
除了生成主要的MANIFEST.MF外,BundlorEclipse 还能够创建一个TEST.MF用于纯测试依赖项。为了支持这一点,Eclipse Java 项目中的源文件夹可以标记为 test-only。然后 Bundlor 将处理这些 test-only 文件夹,并将检测到的依赖项添加到TEST.MF.
使用方法
BundlorEclipse 可用于任何具有 SpringSource OSGi Bundle 项目特性的 Eclipse Java 项目。请注意,这不要求使用 Bundle Classpath Container。
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
如果您遇到任何问题,请随时在 Bundlor 项目的 JIRA 中提出。由于 Bundlor 和 BundlorEclipse 是新产品,我们乐于在我们的 dm Server Tools 社区论坛中讨论这些问题。