在 Eclipse 中使用 Bundlor

工程 | Christian Dupuis | 2009年3月26日 | ...

在之前的博客中,Ben 介绍了 Bundlor,其背后的概念以及如何从命令行以及 ANT 和 Maven 中使用它。在这篇文章中,我将展示如何在 Eclipse 环境中使用 Bundlor。

在开发基于 OSGi 的应用程序时,一些用户不想花费时间不断更新他们的MANIFEST.MF文件,而是希望专注于应用程序组件中的实际业务逻辑:在这种情况下,Bundlor Eclipse 集成将确保该MANIFEST.MF文件反映项目中代码工件表达的实际依赖关系,并消除了在 Eclipse 中手动管理类路径设置的需要。此外,BundlorEclipse 可以通过在 Eclipse 中引入 *仅测试* 源文件夹和第二个名为TEST.MF的清单文件来帮助清晰地分离运行时依赖项和测试依赖项,以指定单元测试类的依赖项。

背景

如果 Bundlor 在 Eclipse 中运行,它将使用基于使用Eclipse JDT 创建的抽象语法树的源代码扫描来处理 Java 源文件。这允许 Bundlor 在没有现有项目类路径的情况下以及从非编译的、部分 Java 代码创建清单文件。此外,Bundlor 支持的所有其他资源(目前是 Spring 配置文件、Hibernate 和 JPA 映射文件)也在 Eclipse 中处理。

在 Eclipse 中使用时,Bundlor 支持清单文件的增量创建和更新。这在开发过程中非常有用,此时只有一组源代码工件发生了更改。然后,Bundlor 将只更新属于已更改资源的那些标题值,而不是重新处理整个项目。

如果您不想让 Bundlor 在后台运行以自动更新资源更改时的清单,或者您想更精确地控制何时应更新清单,则 Eclipse 集成提供了一个按需启动 Bundlor 的操作。

除了生成主要的MANIFEST.MFMANIFEST.MF 文件之外,BundlorEclipse 还能够为纯测试依赖项创建一个TEST.MFTEST.MF 文件。为了支持这一点,Eclipse Java 项目中的源文件夹可以标记为 *仅测试*。然后,Bundlor 将处理这些 *仅测试* 文件夹并将检测到的依赖项添加到TEST.MF.

用法

BundlorEclipse 可以用于任何具有 *SpringSource OSGi Bundle* 项目性质的 Eclipse Java 项目。请注意,这不需要使用 *Bundle Classpath Container*。

要测试 Bundlor,您可以使用 *新建 Bundle 项目向导* 创建一个新项目。向导将确保满足运行 Bundlor 的所有前提条件。如果您想在现有项目上使用或测试 Bundlor,请按照以下步骤操作

  • 确保项目具有 *SpringSource OSGi Bundle* 项目性质。要启用该性质,请调出项目的上下文菜单并选择:*Spring Tools -> 添加 OSGi Bundle 项目性质*

    add-osgi-bundle-nature-thumbs

  • 在项目的属性对话框中可选地定义 *仅测试* 源文件夹。在项目上打开上下文菜单并选择 *属性 -> Spring -> Java 测试文件夹*

    java-test-folders-thumb

  • 可选地检查您是否在项目的根目录中有一个名为template.mf的 Bundlor 模板
  • 从项目的上下文菜单触发 Bundlor 清单生成过程:选择 *Spring Tools -> 运行 MANIFEST.MF 文件的生成*。或者,通过使用上下文菜单中的 *启用 MANIFEST.MF 文件的增量生成* 来启用增量清单生成。

    run-manifest-generation-thumb

相同的操作也适用于 dm Server Tools 附带的清单编辑器的 *概述页面*。

BundlorEclipse 可以与 dm Server Tools 中的 Bundle Classpath Container 结合使用。类路径容器可以从任何 OSGi bundle 项目的上下文菜单中启用和禁用。在此设置中,当MANIFEST.MFMANIFEST.MFTEST.MF文件已被 Bundlor 更改时,容器将自动更新类路径。典型的开发人员工作流程如下所示

  1. 开发人员更改 Java 源文件或 Spring 配置并添加新的依赖项(我们将很快提供针对 Java 和 Spring XML 的基于存储库的内容辅助,以使添加新的依赖项更容易)
  2. 开发人员保存已更改的资源
  3. BundlorEclipse(增量模式)自动检测这些更改并处理已更改的资源
  4. BundlorEclipse 更新MANIFEST.MFMANIFEST.MFTEST.MF以反映开发人员引入的新依赖项
  5. Bundle Classpath Container 更新类路径,因为对MANIFEST.MFMANIFEST.MFTEST.MF进行了更改
  6. Java 源代码将使用类路径上的新依赖项自动重新编译;Spring 配置文件将重新验证

只有在从源代码工件添加或删除依赖项或源代码工件本身已被删除/移动时,步骤 4 到 6 才会执行。

当然,BundlorEclipse 可以与任何其他类路径容器(例如 Maven Classpath Container)一起使用:如果您想使用 Maven 插件,如 m2eclipse 或 Q4E,您可以删除 *Bundle Classpath Container*(*Spring Tools -> 禁用 Bundle Classpath Container*)并为项目启用 Maven 支持。在这种 Artifact-First 方法中,Bundlor 将只管理MANIFEST.MFMANIFEST.MF 文件;类路径将由 Maven 插件控制。

请注意,在此阶段,Bundlor 在检测到的依赖项、MANIFEST.MFMANIFEST.MF 文件之间没有任何同步功能: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社区论坛中讨论这些问题。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以快速提升您的进度。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部