news 2026/9/11 12:05:53

DBeaver 如何从源码构建 DBeaver CE 完整产品

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DBeaver 如何从源码构建 DBeaver CE 完整产品

DBeaver 如何从源码构建 DBeaver CE 完整产品

【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver

DBeaver CE 是基于 Eclipse RCP 和 OSGi 插件架构的 Java 桌面数据库工具,源码仓库中的每个插件都是一个eclipse-plugin包,单独构建一个 bundle 通常无法成功。如果你想从源码产出可以分发的 DBeaver CE 完整产品(而不是单个插件),需要按仓库文档指定的聚合入口和 Maven Profile 执行完整构建。本文覆盖构建前置准备、完整产品构建命令、产物说明和测试验证方式。

前置条件

按 AGENTS.md 的说明,构建前需要满足以下条件:

  • Java 21:目标平台要求JavaSE-21,代码语言为 Java 21,且不能使用 preview 特性。
  • Maven + Eclipse Tycho:构建系统为 Apache Maven + Eclipse Tycho,每个插件打包为eclipse-plugin,测试插件为eclipse-test-plugin
  • 依赖仓库必须克隆到同一父目录:DBeaver 各仓库之间存在依赖,仓库根目录的 project.deps 声明了本仓库依赖dbeaver-commondatadam-api两个仓库。所有 dbeaver 相关仓库必须克隆在同一个目录(文档称之为DBEAVER_DEV_HOME,即 dbeaver 仓库的父目录)下;依赖仓库缺失时,自行将其克隆到该父目录即可。
  • OSGi 依赖来自 P2 仓库:所有 OSGi 依赖都来自 Eclipse P2 仓库(不是 Maven Central),包括标准 Eclipse P2 仓库和 DBeaver 自定义 P2 仓库。自定义 P2 仓库的源仓库是dbeaver-deps-ce,负责把经典 Maven 依赖转换成 P2 bundles。根目录的 osgi-app.properties 中声明了构建使用的 P2 仓库地址(如https://repo.dbeaver.net/p2/ce/latest/),因此构建过程需要能访问这些网络仓库。
  • 开发主分支为devel,从该分支获取源码进行构建。

构建入口:聚合 POM 与产品 Profile

完整产品构建的入口是 product/aggregate/pom.xml,它把三块内容放进同一个 Maven 反应堆构建:

<modules> <module>../../../dbeaver-common</module> <module>../../../datadam-api/apis</module> <module>../..</module> </modules>

前两个模块指向DBEAVER_DEV_HOME下的依赖仓库,第三个就是 dbeaver 仓库本身。这就是为什么依赖仓库必须放在同一父目录。

产品层面由 product/pom.xml 中的 Maven Profile 决定构建哪个产品:

Profile构建的模块说明
product-dbeaver-ceproduct/communityDBeaver CE 桌面完整产品
product-dbeaver-eclipse-ceproduct/repositoriesEclipse 插件的 P2 仓库
product-dbeaver-ce-msstoreproduct/community-msstoreMS Store 版本产品

需要构建其他产品时,使用不同的 Profile 组合;完整 Profile 列表见 product/pom.xml。

执行完整产品构建

在 dbeaver 仓库根目录执行(命令原样来自 AGENTS.md):

mvn package -f product/aggregate/pom.xml -T1C -Pproduct-dbeaver-ce,product-dbeaver-eclipse-ce
  • -f product/aggregate/pom.xml:指定聚合入口,同时把dbeaver-commondatadam-api和 dbeaver 仓库纳入构建。
  • -T1C:Maven 的并发构建参数,按 CPU 核数分配构建线程。
  • -Pproduct-dbeaver-ce,product-dbeaver-eclipse-ce:同时启用两个 Profile,一个产出 CE 桌面产品,一个构建 P2 仓库。

文档明确提示:在单个 bundle 目录下直接执行mvn package通常失败,因为 OSGi 要求构建中包含所有 bundle,或者它们已经安装在本地.m2中。因此不要试图跳过聚合入口单独构建某个插件。

可选分支:如果需要构建 MS Store 版本产品,把 Profile 换成product-dbeaver-ce-msstore,它构建 product/community-msstore 模块。

构建产物

product/community/pom.xml 的 packaging 为eclipse-repository,通过tycho-p2-director-plugin物化产品,配置要点:

  • 产品 ID:org.jkiss.dbeaver.core.product
  • 产品归档名:dbeaver-ce-${dbeaver-version}${dbeaver-version}是构建定义的 Maven 属性,由构建自动解析,无需手工替换)
  • 归档根目录(rootFolders配置):Linux / Windows / Solaris 为dbeaver,macOS 为DBeaver.app

构建完成后,在构建输出中查找名为dbeaver-ce-${dbeaver-version}的产品归档。按 README.md 的说明,这类归档解压后可以在命令行运行其中的dbeaver启动器来启动应用(DBeaver 运行需要 Java,预构建发行版自带 JRE)。

测试验证

按 AGENTS.md,对整个仓库运行测试的命令是:

mvn verify -f product/aggregate/pom.xml -T1C -Pproduct-dbeaver-ce,product-dbeaver-eclipse-ce

该命令会运行桌面版 dbeaver ce 和 dbeaver eclipse 插件的测试。测试由 Maven Tycho 作为标准构建的一部分执行,没有单独的 test-only Maven 命令;测试在mvn installmvn verify时随构建执行。另外,单个 bundle 内直接跑测试通常也会失败,原因同样是 OSGi 容器要求所有 bundle 参与构建或已安装在.m2

已知限制

  • Java 版本锁定在 21,目标平台为JavaSE-21,不要依赖 preview 特性。
  • bundle 间依赖声明在META-INF/MANIFEST.MFRequire-Bundle头中,而不是pom.xml里;排查依赖问题时应看 manifest。
  • 构建依赖 Eclipse P2 与 DBeaver 自定义 P2 仓库的网络可达性,离线环境无法完成完整构建。
  • 主开发分支是develrelease_VERSION分支用于各版本发布,不要直接在其上提交。

完成构建与测试后,产物与测试结果的对照就是这条路径的验证点:package产出dbeaver-ce-${dbeaver-version}产品归档,verify跑通 CE 桌面与 Eclipse 插件的测试。需要继续扩展(例如新增数据库驱动插件)时,可参考 AGENTS-New-Database-Driver.md 中的步骤,新插件加入plugins/pom.xml的模块列表后再执行上述聚合构建。

【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 12:05:44

MySQL 8.0报错1251:认证协议不匹配的排查与解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 12:01:48

FFmpeg中av_find_best_stream函数详解与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 11:57:09

Duix-Avatar 报 SQLite3 can only bind 类型错误?先查 voice_id

Duix-Avatar 报 SQLite3 can only bind 类型错误&#xff1f;先查 voice_id 【免费下载链接】Duix-Avatar &#x1f680; Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitH…

作者头像 李华
网站建设 2026/9/11 11:55:35

ESP32与FPGA驱动CYW240128图形点阵屏踩坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 11:52:54

轻羽大师:基于OCR与事件驱动的Windows桌面自动化引擎

1. 这不是“又一个定时工具”——轻羽大师的本质是一套面向Windows桌面场景的智能任务调度引擎 你搜“轻羽大师”&#xff0c;首页跳出的大多是“免费定时关机软件”“自动点击小工具”这类描述。但如果你真把它当成Windows自带任务计划程序&#xff08;Task Scheduler&#x…

作者头像 李华