diff --git a/deploy/build-backend.sh b/deploy/build-backend.sh index ba401ce61f..9d752b3813 100755 --- a/deploy/build-backend.sh +++ b/deploy/build-backend.sh @@ -11,17 +11,8 @@ mkdir ./cloudbeaver/server mkdir ./cloudbeaver/conf mkdir ./cloudbeaver/workspace -echo "Pull cloudbeaver platform" - -cd ../.. - -echo "Pull dbeaver platform" -[ ! -d dbeaver ] && git clone --depth 1 https://github.com/dbeaver/dbeaver.git -[ ! -d dbeaver-common ] && git clone --depth 1 https://github.com/dbeaver/dbeaver-common.git -[ ! -d dbeaver-jdbc-libsql ] && git clone --depth 1 https://github.com/dbeaver/dbeaver-jdbc-libsql.git - - -cd cloudbeaver/deploy +echo "Pull and patch build deps (dbeaver, dbeaver-common, dbeaver-jdbc-libsql)" +./scripts/clone-build-deps.sh echo "Build CloudBeaver server" diff --git a/deploy/scripts/clone-build-deps.sh b/deploy/scripts/clone-build-deps.sh new file mode 100755 index 0000000000..a694c59559 --- /dev/null +++ b/deploy/scripts/clone-build-deps.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# 在本地拉取构建 CloudBeaver 所需的依赖仓库(dbeaver、dbeaver-common、dbeaver-jdbc-libsql) +# 并可选地对 dbeaver 打达梦驱动补丁。 +# 应在 cloudbeaver 仓库的上一级目录执行,使 dbeaver 与 cloudbeaver 同级。 +set -Eeo pipefail + +# 分支/标签,与 server/pom.xml 使用的 DBeaver 版本对应 +DBEAVER_BRANCH="${DBEAVER_BRANCH:-release_25_2_1}" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# deploy/scripts -> deploy -> cloudbeaver;再上一级 = 与 cloudbeaver 同级的目录 +CLOUDBEAVER_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +PARENT_DIR="$(dirname "$CLOUDBEAVER_ROOT")" +cd "$PARENT_DIR" + +echo "Clone/build deps under: $PARENT_DIR" +echo "DBeaver branch: $DBEAVER_BRANCH" + +[ ! -d dbeaver ] && git clone --depth 1 -b "$DBEAVER_BRANCH" https://github.com/dbeaver/dbeaver.git +[ ! -d dbeaver-common ] && git clone --depth 1 -b "$DBEAVER_BRANCH" https://github.com/dbeaver/dbeaver-common.git +[ ! -d dbeaver-jdbc-libsql ] && git clone --depth 1 -b "$DBEAVER_BRANCH" https://github.com/dbeaver/dbeaver-jdbc-libsql.git + +# 对 dbeaver 打达梦驱动补丁 +"$SCRIPT_DIR/patch-dbeaver-dameng.sh" "$(pwd)/dbeaver" + +echo "Clone and patch done. You can run build from cloudbeaver/deploy (e.g. ./build-backend.sh)." diff --git a/deploy/scripts/patch-dbeaver-dameng.sh b/deploy/scripts/patch-dbeaver-dameng.sh new file mode 100755 index 0000000000..7ad634d5e7 --- /dev/null +++ b/deploy/scripts/patch-dbeaver-dameng.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# 在 DBeaver generic 插件中插入达梦( dameng_jdbc )驱动定义 +# 用法: 从 cloudbeaver 仓库根目录的上一级执行;或传入 dbeaver 根目录 +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +if [ -n "$1" ]; then + DBEAVER_ROOT="$1" +else + DBEAVER_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)/../dbeaver" +fi + +PLUGIN_XML="${DBEAVER_ROOT}/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml" +if [ ! -f "$PLUGIN_XML" ]; then + echo "DBeaver plugin.xml not found: $PLUGIN_XML" + echo "Usage: $0 [dbeaver_root]" + exit 1 +fi + +if grep -q 'id="dameng_jdbc"' "$PLUGIN_XML"; then + echo "Dameng driver already present in DBeaver plugin.xml, skip patch." + exit 0 +fi + +python3 - "$PLUGIN_XML" << 'PY' +import sys +path = sys.argv[1] +# 在 前插入达梦驱动(兼容不同缩进) +marker = "" +driver_block = ''' + + + + ''' + +with open(path, "r", encoding="utf-8", errors="replace") as f: + content = f.read() +if marker not in content: + sys.exit("Marker not found in plugin.xml") +# 只替换第一次出现,保留该行原有前导空白 +new_content = content.replace(marker, driver_block, 1) +with open(path, "w", encoding="utf-8") as f: + f.write(new_content) +print("Patched DBeaver plugin.xml: added dameng_jdbc driver.") +PY + +echo "Done." diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml b/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml index 47e6ec4e8c..1e50351223 100644 --- a/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml +++ b/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml @@ -21,6 +21,7 @@ + @@ -44,6 +45,7 @@ + @@ -68,6 +70,7 @@ + diff --git a/server/drivers/dameng/lib/DmJdbcDriver18-8.1.3.62.jar b/server/drivers/dameng/lib/DmJdbcDriver18-8.1.3.62.jar new file mode 100644 index 0000000000..9d4dd5d3ac Binary files /dev/null and b/server/drivers/dameng/lib/DmJdbcDriver18-8.1.3.62.jar differ diff --git a/server/drivers/dameng/pom.xml b/server/drivers/dameng/pom.xml new file mode 100644 index 0000000000..e7802930bb --- /dev/null +++ b/server/drivers/dameng/pom.xml @@ -0,0 +1,49 @@ + + 4.0.0 + drivers.dameng + 1.0.0 + + io.cloudbeaver + drivers + 1.0.0 + ../ + + + + dameng + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + copy-dameng-jar + validate + + ../../../deploy/drivers/dameng + true + + + lib + + *.jar + + + + + + copy-resources + + + + + + + + diff --git a/server/drivers/pom.xml b/server/drivers/pom.xml index 820f775925..5371447bf6 100644 --- a/server/drivers/pom.xml +++ b/server/drivers/pom.xml @@ -18,6 +18,7 @@ clickhouse_com databend + dameng db2 db2-jt400 duckdb