OSGi enRoute – 2.2_2 – 工作空间

你将会在本节学到什么

在本节中你将学习什么是bnd工作空间以及它是如何关联到Git和Eclipse工作空间的。我们将会处理命名并告知如何使用github上已经准备好的enRoute工作空间模板,这些模板已经设置好了我们所需的各种配置。通过本节的学习之后你将会获得一个新建的工作空间。

此外,你可以学习Eclipse,Git,enRoute以及bnd工作空间之间的关系。

在你开始学习本节之前,请确保在你的平台上使用OSGi enRoute的准备工作已经完成。

在下节中你将会学习如何来设置一个工作空间。在本教程中你必须确保已有了一个新的工作空间。如果你已经完成了快速入门教程,则应该已经有了一个工作空间,删除掉它或者在本教程中使用另外的不同名字来命名工作空间以避免产生混淆。

工作空间

OSGi enRoute需要你将一组工程都放到一个bnd工作空间之中。一个bnd工作空间是指一个带有cnf子文件夹的文件夹。我们通过获取git上的模板工作空间来开始学习。

警告:这是OSGi enRoute 2.0.0的BETA版教程。需要使用正确的工作空间模板,选择Bndtools首选项并选择Workspace Templates。你应该编辑OSGi enRoute模板并选择next选项。

注意:本教程需要Bndtools3.3.0或更新版本,工作空间模板功能是在3.2.0中添加的。

注意:我们通常会建议你在home文件夹(~)中存储信息。然而Eclipse无法将波浪符(~)识别为指向你的Home文件夹的引用,因此在图中会显示出不同的路径。

两个工作空间???

首先解释下容易引起混淆的概念。我们有两个工作空间:

● Eclipse——Eclipse的工作空间。Eclipse工作空间是一个带有.metadata子文件夹的文件夹。在OSGi enRoute系列教程中,我们绝不会将任何工程放到这个文件夹中。这个文件夹也不会存储到Git或其他SCM中,其中应该仅仅包含你的本地配置和信息。为了方便在不同的Eclipse工作空间中切换,建议将所有的Eclipse工作空间都放到一个容易访问的文件夹中,例如/Ws/eclipse。

● bnd-所有的工程都会存放在一个单独的bnd workspace文件夹中。bnd工作空间可以被存储到Git或其它SCM中。因此在其中不要存放任何私人信息。bnd工作空间是扁平化的,cnf文件夹和所有的工程文件夹都必须存放在相同的父文件夹中,该文件夹即workspace directory。bnd工作空间可以存放到一个文件夹中以便于Git管理。Eclipse建议该文件夹为~/git。

文件夹结构如下图所示:

20171015_001

打开Eclipse (或切换工作空间)

如果你启动Eclipse,则将会要求打开Eclipse工作空间,参考之前的问题的说明。在启动Eclipse时(或者当你选择File/Switch Workspace菜单时)你将会看到如下对话框:

20171015_002

在填写合适的路径并且点击OK按钮关闭对话框之后,Eclipse将会重启。在启动完毕后,我们将会看到如下界面:

20171015_003

创建bnd工作空间

要创建一个新的bnd工作空间,我们需要使用New/Other/Bndtools/Bnd OSGi Workspace 菜单:

20171015_004

选择Bnd OSGi Workspace并点击Next按钮。这将会弹出一个选择bnd工作空间位置的对话框。在此对话框中我们必须在单选按钮中选择Create in项,前面已经解释过,让bnd工作空间和Eclipse空间使用同一个文件夹是一个反面实践案例。

单击Next按钮将会显示选择模板的窗体。在这里我们需要明确选择OSGi enRoute模板。

20171015_005

在你选择模板并单击Next按钮之后,Bndtools将会展示工作空间中的更新内容列表。如果你是要更新一个已有的工作空间,那么你可以控制可能的冲突。

20171015_006

在本例中我们可以直接点击Finish按钮来结束操作!我们的Eclipse将与下图类似:

20171015_007

它是如何工作的?

下面来理解工作空间是如何布局的。一个Eclipse工作空间是指用于存储Eclipse元数据的文件夹,例如插件用于持久化存储或历史信息。尽管它可以用于存储实际的工程,但是这并不是一个好主意,特别是如果你使用了一个源码控制系统的情况。在你包含Git工作空间的时候EGit会变得非常慢。

因此,Eclipse中的各个工程的最佳使用方法并非将它们存储到Eclipse工作空间中,而是从其它的文件夹中导入进来。

对于bnd来说,一个工作空间指的是带有一个cnf子文件夹和一些工程的文件夹。这是一个扁平的空间;很多人可能不喜欢它但是由于它很简单并且很难出错,因此它很好用。不要指望这会发生改变,所以不要围绕这个来做工作,否则你会后悔的。cnf文件夹包含了一个build.bnd文件和一个ext文件夹,它们共同定义了工作空间的属性。

一个bnd工作空间就像一个模块一样;它可以从版本库中导入bundle(以及JAR包)并且可以向同一个版本库或其它版本库中导出bundle。在内部我们有一些工作空间的私有工程。这些工程应该具有内聚性,因此它们可以通过cnf工程分享信息。

Git工作空间是一个带有.git子文件夹的文件夹。在与bnd同用的时候,Git工作空间和bnd工作空间会互相重叠。换言之,bnd工作空间是一个单独的Git工作空间。其中的工程不会带有其自身的版本库。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2017/10/osgi-enroute-0202-02/
百度已收录