新闻详情

新闻详情

首页 / 资讯中心 / 详情

DBeaver 如何添加新的数据库驱动插件

发布时间:2026/9/11 13:44:34来源:尧图网络
DBeaver 如何添加新的数据库驱动插件
DBeaver 如何添加新的数据库驱动插件【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver如果你的任务是为 DBeaver 增加一种新数据库的连接支持例如某个只有 JDBC 驱动的数据库需要完成的是创建一对 OSGi 插件目录模型插件必要时加 UI 插件在plugin.xml中注册数据源提供者和 SQL 方言实现少量 Java 类并把新插件挂进 Maven 构建最后通过全仓库构建验证。DBeaver 基于 Eclipse RCP OSGi每个数据库插件是一个打包为eclipse-plugin的 bundle整个仓库需要 Java 21JavaSE-21不使用 preview 特性和 Apache MavenEclipse Tycho 构建。有一个重要的简化前提AGENTS-New-Database-Driver.md 明确指出很多驱动只需更新plugin.xml就够了——只有当现有 JDBC 基础设施org.jkiss.dbeaver.model.jdbc不能覆盖你的场景时才需要实现 Java 类。本文的主路径同时覆盖“只注册驱动”和“需要写模型类”两种情况并以仓库中 DuckDB 插件作为可参照的真实示例。插件目录结构以 DuckDB 插件为模板新建插件时目录结构照 plugins/org.jkiss.dbeaver.ext.duckdb 复制即可。一个最小驱动插件包含四个部分META-INF/MANIFEST.MFbundle 元数据声明 OSGi 依赖Require-Bundleplugin.xmlEclipse 扩展点注册pom.xmlMaven 描述符packaging 必须是eclipse-pluginsrc/bundle 源码目录由build.properties指定Tycho 的要求。DuckDB 插件的 MANIFEST.MF 说明了典型的 bundle 依赖声明方式——模型层依赖全部通过Require-Bundle头声明而不是写在pom.xml里这也是 OSGi 依赖的声明位置Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: DBeaver DuckDB Model Bundle-SymbolicName: org.jkiss.dbeaver.ext.duckdb;singleton:true Require-Bundle: org.jkiss.dbeaver.model, org.jkiss.dbeaver.model.sql, org.jkiss.dbeaver.ext.generic, org.jkiss.dbeaver.data.gis Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-21 Export-Package: org.jkiss.dbeaver.ext.duckdb.model, org.jkiss.dbeaver.ext.duckdb.model.data新建插件时把Bundle-SymbolicName、Export-Package换成你的包名Require-Bundle按实际使用的模块声明至少要包含模型插件实际依赖的org.jkiss.dbeaver.model和org.jkiss.dbeaver.ext.generic。pom.xml 则很短只需声明 parent 和eclipse-plugin打包方式parent groupIdorg.jkiss.dbeaver/groupId artifactIdplugins/artifactId version1.0.0-SNAPSHOT/version relativePath..//relativePath /parent artifactIdorg.jkiss.dbeaver.ext.duckdb/artifactId version1.0.79-SNAPSHOT/version packagingeclipse-plugin/packaging实现哪些 Java 类按需实现复用 generic 插件按 AGENTS-New-Database-Driver.md 的清单完整实现一个新驱动涉及以下类但每一项都有“按需”边界DBPDataSourceProviderYourDataSource数据源提供者在plugin.xml的org.jkiss.dbeaver.dataSourceProvider扩展点下注册。官方建议以org.jkiss.dbeaver.ext.generic作为基座插件大多数数据库插件依赖它因此可以直接继承 generic 的提供者。DuckDB 的实现就只有一个构造器见 DuckDBDataSourceProvider.javapublic class DuckDBDataSourceProvider extends GenericDataSourceProviderDuckDBDataSource { public DuckDBDataSourceProvider() { super(DuckDBDataSource.class); } }JDBCDataSource来自org.jkiss.dbeaver.model.jdbc仅当驱动是 JDBC 型且现有 JDBC 基础设施不能覆盖时才实现。SQLDialect或继承JDBCSQLDialectSQL 语法特有需要时才写注册到org.jkiss.dbeaver.sqlDialect扩展点。文档同时给出了两条硬性约束写代码前需要知道不要复制粘贴现有代码尤其是本地化 bundle 和 SQL 查询复用现有代码如果需要修改数据库导航树结构用plugin.xml中的treeInjection而不是整段拷贝 generic 树——大多数数据库的树结构非常相似复用 better这是文档原文表述it is better to reuse it。另外两个来自 AGENTS.md 的全局规则会影响你的插件代码模型插件不得依赖 SWT、JFace 等 UI bundle模型/UI 分离每个 Java 文件开头必须是 Apache 2.0 许可头内容在 docs/license_header.txt且${current-year}变量要填成当前年份。plugin.xml 的驱动注册参考 DuckDB 插件DuckDB 插件的 plugin.xml 展示了plugin.xml的四种典型注册前三种是添加驱动时需要关心的org.jkiss.dbeaver.dataSourceProvider声明数据源和驱动本身。核心属性是class提供者类、id、label、dialect、parentgeneric继承 generic 提供者的属性以及drivers下的驱动定义——class是 JDBC 驱动类如org.duckdb.DuckDBDriversampleURL是样例连接 URL如jdbc:duckdb:{file}supportedConfigurationTypes声明支持的手动配置类型如MANUAL,URLextension pointorg.jkiss.dbeaver.dataSourceProvider datasource classorg.jkiss.dbeaver.ext.duckdb.model.DuckDBDataSourceProvider descriptionDuckDB JDBC connector idduckdb parentgeneric inheritProviderPropertiestrue labelDuckDB iconplatform:/plugin/org.jkiss.dbeaver.ext.generic/icons/duckdb_icon.png dialectduckdb drivers managabletrue driver idduckdb_jdbc labelDuckDB classorg.duckdb.DuckDBDriver sampleURLjdbc:duckdb:{file} defaultPort embeddedtrue anonymoustrue descriptionDuckDB JDBC driver supportedConfigurationTypesMANUAL,URL categoriessql,embedded replace providergeneric driverduckdb_jdbc/ file typejar pathmaven:/org.duckdb:duckdb_jdbc:RELEASE oswin32 archaarch64 bundle!drivers.duckdb/ property namedbeaver-default-resultset.maxrows.sql valuetrue/ /driver /drivers /datasource /extension其中drivers下的file typejar节点声明 DBeaver 按操作系统/架构自动下载驱动 jar 的 Maven 坐标pathmaven:/groupId:artifactId:RELEASEos/arch限定平台replace节点用于替换 generic 插件中的同名驱动条目。你的新驱动按自己 JDBC 驱动的实际 Maven 坐标和sampleURL填写这两类节点。org.jkiss.dbeaver.generic.meta把驱动映射到元数据模型class指向 MetaModel 实现driverClass填 JDBC 驱动类DuckDB 对应DuckMetaModel。org.jkiss.dbeaver.sqlDialect注册 SQL 方言id与datasource的dialect属性一致class指向你的方言类可继承JDBCSQLDialectparentgeneric表示在通用方言基础上扩展。此外 DuckDB 还注册了objectManager对象管理器和dataTypeProvider数据类型处理器两类扩展点属于针对该数据库特殊类型的可选扩展简单驱动不需要。接入构建修改两处 pom 并加入测试插件插件创建好后要挂进 Maven 构建改动两处见 AGENTS-New-Database-Driver.md把新插件目录加入 plugins/pom.xml 的modules列表。以 DuckDB 为例它的注册行是moduleorg.jkiss.dbeaver.ext.duckdb/module注意仓库中 UI 插件org.jkiss.dbeaver.ext.duckdb.ui位于独立的 module 分组里如果你的插件带可选 UI 伴生目录plugins/org.jkiss.dbeaver.ext.{db}.ui/也同样登记。添加测试插件test/org.jkiss.dbeaver.ext.{db}.test/并在 test/pom.xml 中注册。测试插件的打包类型是eclipse-test-plugin见 AGENTS.md。测试类继承DBeaverUnitTest来自org.jkiss.dbeaver.osgi.test.runner需要运行中 OSGi 容器的集成测试用RunWithApplication/RunWithProduct注解。并非每个模型插件都有对应测试插件例如 DuckDB 模型插件目前没有test目录但文档的建议是模型层函数尽量补单元测试。构建与验证只能全量构建单 bundle 构建会失败验证新插件是否正确的唯一可靠方式是跑全仓库构建。AGENTS.md 明确说明两点在单个 bundle 目录里直接mvn package通常会失败OSGi 需要全部 bundle 参与构建完整产品构建和全仓库测试都从聚合 POM 发起# 全量产品构建 mvn package -f product/aggregate/pom.xml -T1C -Pproduct-dbeaver-ce,product-dbeaver-eclipse-ce # 全仓库构建并运行测试 mvn verify -f product/aggregate/pom.xml -T1C -Pproduct-dbeaver-ce,product-dbeaver-eclipse-cemvn verify会同时构建 desktop DBeaver CE 和 Eclipse 插件产品并执行其中的测试。没有单独的测试命令——测试在mvn install/mvn verify期间由 Tycho 执行。构建通过、测试全绿且你在plugins/pom.xml与test/pom.xml中都登记了新模块就完成了一次新驱动插件的接入。后续要扩展该插件导航树treeInjection、自定义数据类型处理器、UI 伴生插件参照 AGENTS-Architecture.md 的模型/UI 分离与命名约定DBP*平台能力、DBS*结构元数据、DBC*连接、DBD*值处理、DBR*运行时继续补充即可。【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

五招降低AIGC检测率:让文章更像人写的实操指南 2026/9/11 14:20:43

五招降低AIGC检测率:让文章更像人写的实操指南

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

阅读更多 →
DeepSeek Harness服务器部署实战:Docker Compose与GPU调优全指南 2026/9/11 14:20:43

DeepSeek Harness服务器部署实战:Docker Compose与GPU调优全指南

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

阅读更多 →
四步在 Linux 上运行 Windows 应用:winapps 完整配置指南 2026/9/11 14:20:43

四步在 Linux 上运行 Windows 应用:winapps 完整配置指南

四步在 Linux 上运行 Windows 应用:winapps 完整配置指南 【免费下载链接】winapps Run Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard f…

阅读更多 →
工业自动化中托盘输送机PLC程序开发与优化 2026/9/11 14:20:43

工业自动化中托盘输送机PLC程序开发与优化

1. 托盘输送机程序开发的核心挑战 在工业自动化领域,托盘输送系统作为物流环节的"血管网络",其程序开发需要兼顾机械运动控制与信息流管理的双重需求。典型的托盘输送机PLC程序需要处理以下核心问题: 多轴同步控制 :输…

阅读更多 →
CesiumJS 自定义 Widget 快速上手:Cesium Viewer 控件扩展完整指南 2026/9/11 14:20:43

CesiumJS 自定义 Widget 快速上手:Cesium Viewer 控件扩展完整指南

CesiumJS 自定义 Widget 快速上手:Cesium Viewer 控件扩展完整指南 【免费下载链接】cesium An open-source JavaScript library for world-class 3D globes and maps :earth_americas: 项目地址: https://gitcode.com/GitHub_Trending/ce/cesium CesiumJS 自…

阅读更多 →
Redis缓存优化实战:5个技巧有效降低数据库压力 2026/9/11 14:17:43

Redis缓存优化实战:5个技巧有效降低数据库压力

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞