派兔Pi2开发文档

摘要

Pi2(派兔)是基于pisces2-m(bundle-v0.1版本)开发的eclipse rcp 桌面端程序。一个桌面端可以作为server启动,也可以作为client启动。但同一时刻,只能选一种运行模式。Pi2设计的目标是,提供比pisces2-m在两台电脑间传输文件的命令行方式运行更为直观和方便操作的用户交互方式。

https://gitee.com/bbstone101/pisces2-m/tree/bundle-v0.1

基本概念

插件(Plug-in)vs 包(Bundle)

  • 在 Eclipse RCP 中,一个插件就是一个 Bundle,一个 Bundle 就是一个插件。 它们指的是同一个可部署的单元。
  • “插件”这个词承载了更多的Eclipse平台的历史和功能特性的含义。
  • “Bundle”这个词更偏向于OSGi标准的模块化、服务和生命周期管理的含义。

历史演变:从 Plug-in 到 Bundle

  • Eclipse 2.x/3.x (Plug-in): 在早期版本的 Eclipse 中,基本单元被称为 Plug-in。它的定义和元数据都存储在一个名为 plugin.xml 的文件中。这个阶段,OSGi 的概念虽然已经被采用,但对外暴露的更多是“插件”这个术语。
  • Eclipse 3.0 及以后 (OSGi 和 Bundle): 从 Eclipse 3.0 开始,Eclipse 将其底层架构完全构建在 OSGi 框架(最初是 Equinox,它是 OSGi 规范的一个实现)之上。OSGi 的标准术语是 Bundle。因此,一个 Eclipse 插件在 OSGi 运行时看来,就是一个 Bundle。它的元数据定义从 plugin.xml 迁移到了更标准化的 MANIFEST.MF 文件(虽然为了向后兼容,plugin.xml 仍然存在并被用于某些扩展点)。

概念侧重点的不同

尽管指向同一个物理实体(即那个包含代码和资源的 JAR 文件),但使用哪个术语通常暗示了不同的视角:

技术本质:同一个东西

在今天的 Eclipse RCP 项目中:

  1. 你创建的每一个插件项目,本质上都是在创建一个 OSGi Bundle。
  2. 项目的 META-INF/MANIFEST.MF 文件是核心,它定义了该模块作为一个 Bundle 的身份和依赖关系。
  3. 同时,该项目也可以包含一个 plugin.xml 文件,用来使用 Eclipse 特有的扩展点机制来贡献 UI 元素(如视图、编辑器、菜单)等。这些扩展最终也是由 OSGi 运行时在 Bundle 启动时进行处理。

功能部件Features

feature是插件的分组管理工具,而插件就是pi2的功能模块划分单元,feature分组主要有以下几个部分:

  1. biz业务功能有关的插件集(feature),由两部分组成:一是、文件传输功能实现的插件,biz.server/biz.cmm/biz.client等;二是、biz中必不可少的日志插件。
  2. RCP使用到的第三方插件集(feature)。也由两部分组成:一是、使用了第三方实现的UI组件:status bar和preference;二是、官方插件仓库没有提供的一些插件,例如, netty, hutool, fast-md5,Jackson等第三方插件,详见<u>pi2-lib项目</u>
  3. UI有关的插件集(feature),同样可分成两部分:一是、专为Pi2开发的UI插件,ui.model/ui.services/ui.cmm,还有提供RCP应用模型的主插件cn.bbstone.pisces2.ui;二是、运行RCP所需的Eclipse提供的UI基础插件。
  4. OS平台特有的插件集(features),通常这部分提供三类平台的特需插件,win32,macosx,linux。

目标平台(Target Platform)

目标平台(Target Platform) 在 Eclipse RCP 开发中,指的是你的 RCP 应用程序最终将要运行时所依赖的所有外部插件(Bundles)的集合。

目标平台可以简单理解为项目的插件依赖总集,而各个feature或插件,所用到的插件都必须是在这个目标平台里提供有才可以选,feature和插件项目选择不到目标平台没包括进来的插件。

一个目标平台通常指定了以下一个或多个内容的位置:

  • Eclipse 发行版:指定一个 Eclipse IDE 或 RCP 运行时(RCP Runtime)的安装目录。这是最常见的方式。
  • 插件目录:指定一个包含大量插件(.jar 文件)的文件夹。
  • 功能部件(Features):指定包含功能部件的目录。
  • 安装源(Installation Source):指向一个可安装的软件仓库站点(Update Site)。

当你定义好目标平台并点击“激活”后,Eclipse IDE 就会使用这个平台中的插件来:

  • 编译你的代码
  • 启动你的应用程序(通过 Eclipse Application 启动配置)
  • 解决依赖关系和类路径

总的来说,目标平台(Target Platform)就是你的 RCP 产品所对外部世界的“官方声明”,它定义了产品运行所需的所有二进制依赖项的确切版本和来源。它是实现专业、可靠、可重现的 Eclipse RCP 开发的基础。

目标平台创建插件总集的方法有很多,如下图所示,

  • Software Site:提供p2的update site方式来下载插件,来组成插件总集,即目标平台。
  • Directory:通过指定本机某个目录,把该目录的插件添加到目标平台来。
  • Installation:未使用(TODO:待验证)
  • Feature:通过feature方式指定插件集。
  • Target File:通过其他的目标平台文件target 文件来指定插件集。
  • Maven:通过maven的坐标,指定插件集。

产品Product

product产品,是Eclipse rcp提供的一个功能,主要用于打包插件集来组成一个软件产品,比较常见的有两种产品分类:

一、打包成Eclipse的一个插件,然后发布到eclipse的插件市场,可以在Eclipse Marketplace 下载安装。
二、打包成独立的可运行的GUI,例如,本项目Pi2,就是这种方式,打包成可以独立运行的桌面端应用。
除此之外,也可以根据具体的需要,创建不同的产品类型,比如,想要发布社区版的产品,或者发布商业版本的产品,来提供更有价值的功能,等等。

源码下载

下载地址:https://gitee.com/bbstone101/pi2

源码简介

派兔Pi2的源码结构如下:

开发环境搭建

  1. 安装JDK11+
  2. 下载 Eclipse IDE(Eclipse IDE for RCP and RAP Developers)版本 2022-06 (4.24.0)
  3. 初次打开Eclipse IDE,需要配置好开发电脑安装的JDK
  4. 参考 目标平台设置 章节,先设置好目标平台
  5. 参考 导入插件和features章节导入插件和features
  6. 在导入product,参考 以下相关章节
  7. 运行 pi2,参考 运行派兔pi2 章节

源码构建(Build)和打包(Package)

从Pi2 v0.7(Tag)版本起,可以通过Tycho来构建各个平台(Mac/Win/Linux)的发布包了。具体步骤如下:

准备工作

1)从下面链接下载解压得到一个名为settings.xml的maven设置文件,将其放在你的用户目录 ~/.m2/下
m2下载

2)在下载的源码:pi2/product/local-repo/目录下,运行start.sh脚本(只支持Mac/Linux运行,Windows,请自行参考x x.sh脚本添加,或直接执行这脚本里边的maven命令),安装和启动local-repo

3)验证local-repo是否启动成功。

在浏览器打开: http://localhost:8080/eclipse-repo/

查看本地库的插件有哪些:http://localhost:8080/eclipse-repo/plugins/

将本地的p2站点(http://localhost:8080/eclipse-repo/)配置到目标平台。

开始构建(BUILD)

执行以下命令进行构建

% cd pi2

% mvn clean verify

构建成功后,显示如下:

发布包说明:

tycho构建成功后,在pi2/product/standalone/target/products/下的productId为cn.bbstone.pisces2.product目录下分别有linux/macosx/win32三个平台的发布包,Linux和Mac都有aarch64(ARM处理器芯片平台)和x86_64的intel处理器芯片平台,Windows只有x86_64,当然也可以在源码目录:pi2/pom.xml 的 target-platform-configuration 的tycho的maven插件修改配置,添加支持更多平台。

发布包位置:

目标平台设置

  1. 用 Import existing Maven projects方式导入target-platform目录
  2. 打开target-platform.target文件,根据读者实际的eclipse 安装路径和pi2-lib的路径执行如下配置

3. 选择配置的目标平台的插件全集,在Content Tab,选择全部

  1. 目标环境,根据作者实际情况选择开发机器的平台环境信息

配置完成后,在Target Definition右上角有“Set as Active Target Paltform“链接,点一下,让配置生效。

导入插件和features

以 General -》Projects from Folder or Archive 方式分别导入plugins和features 目录

导入product

以 General -》 Existing Projects into Workspace 方式导入product目录

运行派兔Pi2

1)如下图所示,打开pisces2.product文件,在Overview tab中点击 Launch an Eclipse application 运行pi2.

2)第一步,通常是报错,启动失败,通常报错,ClassNotFound异常,没找到Shell之类的,代开Run Configuration,如下图所示,“Select Required”,然后“Validate Plug-ins”,确认你开发电脑的swt版本,点击“Apply”保存改动,再点击“Run”再次运行程序。

3)运行成功的界面如下

界面如何操作,请参考:Pi2派兔使用文档

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注