windows下Openmetadata源码搭建

windows下Openmetadata源码搭建

使用Openmetadata分支为main(版本为1.12.0-SNAPSHOT)。

源码地址:github.com/open-metada...

软件清单

  • jdk21

  • mysql

  • elasticsearch

  • node>=22.17.0

  • yarn 1.22.0

  • antlr4 4.9.2

Windows上安装ANTLR4

1. 下载 ANTLR4 工具
bash 复制代码
https://www.antlr.org/download/antlr-4.9.2-complete.jar
2. 设置环境变量

将 ANTLR4 添加到系统路径:

  • 将下载的 antlr-4.9.2-complete.jar 文件复制到特定目录,如 D:/env

  • 设置环境变量:

    • ANTLR4_JAR_PATH: D:/env/antlr-4.9.2-complete.jar

    • d:/env 添加到 [PATH](file://E:\ideaproject\openmetadata\ingestion\src\metadata\ingestion\ometa\mixins\patch_mixin_utils.py#L33-L33) 环境变量

3.创建批处理脚本:

创建 antlr4.bat 文件(保存到 PATH 中的目录):

batch 复制代码
@echo off
java -jar "D:/env/antlr-4.9.2-complete.jar" %*

后端编译

修改openmetadata-spec模块下pom.xml jsonschema2pojo-maven-plugin插件,添加以下代码(避免生成javax.annotation.Generated,造成编译异常):

<includeGeneratedAnnotation>false</includeGeneratedAnnotation>

这里只编译后端代码,排除前端2个模块

shell 复制代码
mvn clean package -DskipTests -DonlyBackend -pl !openmetadata-ui -pl !openmetadata-ui-core-components

运行openmetadata-server

IDEA配置运行程序并启动

前端编译

  • 由于前端package.json文件里面js-antlr是linux命令,所有需要修改一下源码

源码如下:

json 复制代码
"build-check": "yarn run js-antlr && yarn run parse-schema",
"js-antlr": "PWD=$(echo $PWD) antlr4 -Dlanguage=JavaScript -o src/generated/antlr \"$PWD\"/../../../../../openmetadata-spec/src/main/antlr4/org/openmetadata/schema/*.g4",

修改如下:

json 复制代码
  "build-check": "node -e \"const os = require('os'); const cmd = os.platform() === 'win32' ? 'js-antlr-windows' : 'js-antlr-linux'; require('child_process').execSync('yarn run ' + cmd, { stdio: 'inherit' });\" && yarn run parse-schema",
  "js-antlr-linux": "PWD=$(echo $PWD) antlr4 -Dlanguage=JavaScript -o src/generated/antlr \"$PWD\"/../../../../../openmetadata-spec/src/main/antlr4/org/openmetadata/schema/*.g4",
  "js-antlr-windows": "powershell -Command \"antlr4 -Dlanguage=JavaScript -o src/generated/antlr (Join-Path (Get-Location) '/../../../../../openmetadata-spec/src/main/antlr4/org/openmetadata/schema/*.g4')\"",
  • 修改parseSchemas.js文件的traverseDirectory方法,解决文件路径分隔符的问题

源码如下:

js 复制代码
async function traverseDirectory(
  Directory,
  playDir,
  destDir,
  shouldDereference = false
) {
  const Files = fs.readdirSync(Directory);
  for (const File of Files) {
    const Absolute = path.join(Directory, File);
    if (fs.statSync(Absolute).isDirectory()) {
      await traverseDirectory(Absolute, playDir, destDir, shouldDereference);

   } else {
      // 路径分隔符的问题,是的replace的结果不正确
      const name = Absolute.replace(playDir, destDir);
      await parseSchema(Absolute, name, shouldDereference);
    }
  }
}

修改如下:

js 复制代码
// Function to traverse directories and parse files
async function traverseDirectory(
  Directory,
  playDir,
  destDir,
  shouldDereference = false
) {
  const Files = fs.readdirSync(Directory);
  for (const File of Files) {
    const Absolute = path.join(Directory, File);
    if (fs.statSync(Absolute).isDirectory()) {
      await traverseDirectory(Absolute, playDir, destDir, shouldDereference);
    } else {
      // 使用 path.normalize 确保路径分隔符与操作系统兼容
      const normalizedAbsolute = path.normalize(Absolute);
      const normalizedPlayDir = path.normalize(playDir);
      const normalizedDestDir = path.normalize(destDir);

      const name = normalizedAbsolute.replace(normalizedPlayDir, normalizedDestDir);
      await parseSchema(Absolute, name, shouldDereference);
    }
  }
}

编译运行

shell 复制代码
yarn install --frozen-lockfile
yarn start

浏览器访问localhost:3000

Username:admin@open-metadata.org

Password:admin

注:以上步骤省略了配置文件的配置和数据库初始化。

相关推荐
张永清9 个月前
《数据资产管理核心技术与应用》-常见的开源数据资产管理平台介绍与底层架构实现总结
数据资产管理·apache-atlas·data hub·openmetadata