在 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创建的抽象语法树(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,请按照以下步骤操作:

  • 确保项目具有SpringSource OSGi Bundle项目性质。要启用此性质,请打开项目的上下文菜单并选择:Spring Tools -> Add OSGi Bundle Project Nature

    add-osgi-bundle-nature-thumbs

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

    java-test-folders-thumb

  • 可选择性地检查项目根目录下是否存在名为template.mf的Bundlor模板
  • 从项目的上下文菜单触发Bundlor清单生成过程:选择Spring Tools -> Run generation of MANIFEST.MF file。或者,通过从上下文菜单中选择Enable incremental generation of MANIFEST.MF file来启用增量清单生成。

    run-manifest-generation-thumb

这些相同的操作也可从dm Server Tools附带的清单编辑器Overview Page中获得。

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

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

只有当依赖关系被添加或从源代码构件中移除,或者源代码构件本身被移除/移动时,步骤4到6才会执行。

当然,BundlorEclipse可以与其他任何类路径容器(例如Maven Classpath Container)一起使用:如果您想使用Maven插件,如m2eclipse或Q4E,您可以移除Bundle Classpath ContainerSpring 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社区论坛上讨论它们。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有