# anystudio **Repository Path**: freehacker/anystudio ## Basic Information - **Project Name**: anystudio - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AnyStudio 生产级本地数据库工作台。 ## 亮点特性 - **多数据库支持** - 支持 MySQL、PostgreSQL、SQLite、Oracle、SQL Server、ClickHouse、DuckDB 等 30+ 种数据库 - **大数据流式查询** - 流式查询支持百万级数据实时返回,配合多种虚拟化表格组件轻松应对大数据场景 - **Monaco SQL 编辑器** - 完整的 SQL 语法高亮、智能提示与代码折叠 - **AnyLine ORM 集成** - 内置 AnyLine ORM,支持灵活的数据库元数据操作 ## 主要入口 - 连接数据库:进入数据源管理与工作台 - 性能 POC:`/poc/performance`(用于验证大数据加载/渲染相关方案) ## 目录结构 - `src/`:后端(Spring Boot) - `frontend/`:前端(React + Vite) - `scripts/`:本地开发/打包脚本 ## 本地开发 ### 一键启动(后端 + 前端) ```bash ./scripts/restart-dev.sh ``` 默认端口: - 后端:`8080` - 前端:`5173` 停止(只关闭端口占用进程,不再重启): ```bash ./scripts/restart-dev.sh stop ``` ### 分别启动 后端: ```bash ./mvnw spring-boot:run ``` 前端: ```bash cd frontend npm i npm run dev -- --host 127.0.0.1 --port 5173 ``` ## 打包(Jar) ```bash ./mvnw -DskipTests package ``` 产物在 `target/` 下(`anystudio-*.jar`)。 说明: - 生产构建时会执行前端 `build`,并将前端静态资源打进 Jar 的 `classpath:/static/` - 运行 Jar 时不需要单独启动前端开发服务器 - 首次启动需要初始化主密码(用于本地敏感配置加密存储) ## 打包(jlink 免安装运行时目录包) 该方式会生成一个"解压即用"的目录包,包含: - `runtime/`:裁剪后的运行时(无需用户安装 JDK/JRE) - `app/anystudio.jar`:应用 Jar - `bin/anystudio`:启动脚本(外置 conf/logs/drivers 等目录) 执行: ```bash ./scripts/build-jlink.sh ``` 输出目录: ```text target/dist/anystudio-jlink ``` 启动: ```bash cd target/dist/anystudio-jlink ./bin/anystudio ``` 配置/日志/驱动目录(均在分发目录下): - `conf/`:外置配置(默认 `conf/application.yml`) - `logs/`:外置日志(默认 `logs/anystudio.log`) - `drivers/`:外置 JDBC 驱动目录 - `public/`:保留为空目录(用于兼容部分启动场景下 Tomcat 的 document root 探测) ## 打包(Tauri 桌面壳) 当前仓库已新增 `desktop-shell/`,用于将现有前端打成 Tauri 桌面应用,并以内置 `jlink runtime + Spring Boot jar` 的方式启动本地 sidecar 后端。 目录说明: - `desktop-shell/`:Tauri 桌面壳工程 - `desktop-shell/src-tauri/resources/`:桌面包所需的运行时、Jar 和默认配置 - `scripts/prepare-tauri-runtime.sh`:准备 `runtime/` 和 `anystudio.jar` - `scripts/build-tauri.sh`:执行 Tauri 桌面打包 准备运行时资源(后端 Jar 使用 `-Pdesktop`,不含内嵌前端 static): ```bash ./scripts/prepare-tauri-runtime.sh ``` 构建桌面包: ```bash ./scripts/build-tauri.sh ``` 桌面运行模式说明: - 前端在 Tauri 模式下不再走相对 `/api`,而是由桌面壳注入本地 sidecar 的实际地址 - 后端仅监听 `127.0.0.1` 动态端口 - 配置、日志、驱动、数据目录均写入 `~/Library/Application Support/AnyStudio/` 和 `~/Library/Logs/AnyStudio/` ## 打包(GraalVM Native Image) 仓库中已提供 `native` profile(Spring AOT + GraalVM native-image),建议使用 GraalVM JDK。 示例: ```bash export JAVA_HOME='/path/to/graalvm/Contents/Home' export PATH="$JAVA_HOME/bin:$PATH" ./mvnw -Pnative -DskipTests native:compile ``` 产物: ```text target/anystudio ``` ## 配置与运行参数 常用参数示例: ```bash ./bin/anystudio --server.port=18080 --server.address=127.0.0.1 ``` 外置路径(分发脚本默认已带): - `--anystudio.drivers.path=...`:外部 JDBC 驱动目录 - `--anystudio.secure-config.path=...`:安全配置文件(用于保存加密后的敏感信息) ## License Apache License 2.0(与 AnyLine 保持一致),详见 [LICENSE](LICENSE)。