DataEase v2 开源代码 Windows 从0到1环境搭建

一、环境准备

功能名称

描述

其它

操作系统

Windows

数据库

Mysql8.0

开发环境

JDK17以上

本项基于的21版本开发

Maven

3.9版本

开发工具

idea2024.2版本

前端

VSCode

TIPS:如果你本地有jdk8版本,需要切换21版本,请看下面:

https://segmentfault.com/a/1190000044394546

二、代码获取数据库创建

1、获取代码

在你选定的文件夹位置使用git clone 命令克隆dataease的代码。

GitHub地址:

git clone

GitHub - dataease/dataease: 🔥 人人可用的开源 BI 工具,Tableau、帆软的开源替代。

Gitee地址:

git clone

DataEase: DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。

注:版本可自选 注意不要克隆dev分支 此分支可能会有依赖包未上传可以用 -b v** 添加版本号

2、创建数据库

数据库初始化脚本在源码文件夹中\dataease\core\core-backend\src\main\resources\db\desktop这个位置,有两个脚本,都需要执行,可使用navicat客户端工具,也可以用命令行工具,看你喜欢那种。

以下是命令行工具:

登录mysql创建数据库

create database dataease character set utf8mb4;

打开刚创建的数据库后,在其中执行两个sql脚本文件初始化数据库 具体执行脚本根据不同版本而定下图以2.3为例

use dataease

source D:\dataease\dataease\core\core-backend\src\main\resources\db\desktop\V2.3__core_ddl.sql

source D:\dataease\dataease\core\core-backend\src\main\resources\db\desktop\V2.3__ddl.sql

三、开发环境配置

使用IDEA打开dataease源码目录。

在首次使用IDEA打开项目出现插件推荐可以安装。

  1. JDK相关配置

JDK下载安装完成后,调整与JDK相关的设置,项目右键

Settings ->Project Structure -> Project语言选择21

File -> Settings -> Build, Execution, Deployment -> Java Compiler 选择21

  1. 将core加入Maven项目

在项目管理其中选择 core文件夹下的pom.xml文件,使用右键选择 添加为Maven项目,添加完成后IDEA开始下载相关依赖包,等待下载完成。

注:加载完如果遇到依赖包缺失或无法下载到仓库中获取

仓库地址:

Nexus Repository Manager

四、代码调试

环境准备完成后,看一下项目的目录结构,其中 core 是前后端主要代码,drivers 为动态加载的数据库驱动,mapFiles 为系统内使用的genJson地图资源,sdk 为项目公共库,staticResource 为后端的静态资源库,在开始跑程序前有几个配置需要设置一下。

1、数据库连接修改

后端代码需要连接数据库,数据库配置参数在 \core\core-backend\src\main\resources\application-standalone.yml中,根据你的MySQL参数进行修改。

2、配置后端静态资源文件位置

dataease在运行过程中需要很多的静态资源,包括地图、模板素材等,这些资源由后端进行管理,资源位置在 \sdk\common\src\main\java\io\dataease\constant\StaticResourceConstants.java 中,其中最主要的是USER_HOME,修改为自定义的windows本地资源目录,并将项目中的dirvers、mapFiles、staticResource 目录复制到自定义的windows目录中,将mapFiles 名称改为 map, staticResource 名称改为 static-resource,之后修改此文件中的FILE_PROTOCOL 变量内容为 “file:///”(windows中文件访问协议符号需要三个斜杠,否则报错。),此处资源位置修改主要解决地图数据、模板数据的静态资源访问问题,项目中还有两处写在代码中的资源路径,可以通过文件中查找/opt/dataease2.0/data字符串来查找根据需要进行修改。

3、修改运行时驱动位置

修改\core\core-backend\src\main\java\io\dataease\datasource\provider\CalciteProvider.java 下的 FILE_PATH 变量值为自定义资源文件目录中的drivers路径,避免运行时动态加载数据库驱动出错。

4、修改前端项目pom.xml和相关配置文件

项目在进行整体构建时首先编译构建前端代码,前端生成dist发布资源目录,后端将此目录文件复制到\core\core-backend\src\main\resources\static\assets\ 中,并封装在编译后的jar中,而前端编译过程也在pom.xml中进行配置,打开前端项目 core-frontend 目录中的pom.xml文件,找到<!--首次打包需要放开-->和<!--前端组件有更新需要放开--> 的注释代码,放开下面的(取消注释)execution节点,这样在编译构建项目时就会自动安装nodejs、npm 等前端编译相关工具,同时下载前端项目依赖包(首次编译后可以再次注释掉这部分代码)

如果遇到 ‘NODE_OPTIONS’ is not recognized as an internal or external command 问题可以在此代码下面增加如下代码会自动全局安装win-node-env

<execution>
<id>npm install -g win-node-env</id>
<goals><goal>npm</goal>
</goals>
<configuration>
<arguments>install -g win-node-env</arguments>
</configuration>
</execution>

修改core/core-frontend/.eslintrc.js 文件,在最后的rules 节点中增加以下内容,避免前端项目在编译时因格式检查出现错误(windows与macOS、linux中的换行符号表示不同,会因此错误)。

"prettier/prettier": ['off']

五、项目构建

1、构建基础项目

在项目管理其中鼠标右键选择根 dataease ,在菜单中选择 构建模块'dataease',开始构建项目,此时构建项目并不包括core核心代码,只是将sdk中的组件编译完成。

2、构建核心项目

在项目管理器中鼠标右键选择core文件夹,选择 构建模块’core’ ,开始构建核心项目,此处构建包括前端后端,所以时间较长。

当core构建完成后,在项目管理中可以看到生成了 \core\core-backend\target\CoreApplication.jar 文件,在CoreApplication.jar 鼠标右键可以运行或调试了。

3、项目运行

当CoreApplication.jar 成功运行后,可以通过http://localhost:8100正常访问了,用户名与密码分别为 admin Dataease@123456

六、前后端代码独立调试

通过上面步骤,core的后端项目已经可以进行运行或调试了,但是在日常开发中,前端与后端是分别进行的,下面记录一下前后端如何分别调试。

1.修改后端pom.xml文件不在集成前端dist文件夹

修改\core\core-backend\pom.xml 文件,将以下内容注释掉,这样在单独编译后端代码时不在检查并集成前端dist目录内容。

在开始前后端独立调试后,后端代码构建将不在选择core目录,而需要选择\core\core-backend 进行构建。

构建完后在CoreApplication.jar 鼠标右键可以运行或调试了。

2、设置nodejs、npm的系统环境变量

在前面说明的项目整体编译时,前端pom.xml配置文件中设置会自动安装nodejs、npm,安装后的位置在\core\core-frontend\node 中,在前端单独调试前需要将此路径配置到系统环境变量中。

3、前端项目编译

使用vscode 打开\core\core-frontend\ 目录,进行前端开发的正常配置和流程进行前端调试即可,npm运行命令可以在\core\core-frontend\package.json 中看到,其中 npm run dev 为开发模式,npm run build:base 为构建输出,也可以输入 npm install 命令手动执行初始化加载。

注:如果遇到输入npm run devnpm run build:base或者出现不是内部命令在package.json的dev和build:base命令最前面增加cross-env并且安装依赖如下图所示:

安装cross-env依赖

npm install cross-env --save-dev

TIPS:如果报这个错误

The following dependencies are imported but could not be resolved:codemirror (imported by E:/code/dataease-dev-v2/core/core-frontend/src/views/visualized/data/dataset/form/CodeMirror.vue?id=0)Are they installed?
at file:///E:/code/dataease-dev-v2/core/core-frontend/node_modules/vite/dist/node/chunks/dep-b2890f90.js:45779:23
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async file:///E:/code/dataease-dev-v2/core/core-frontend/node_modules/vite/dist/node/chunks/dep-b2890f90.js:45187:38这是什么错误

npm install codemirror

然后npm run dev运行

前端的访问地址是http://localhost:8080,至此可以对DataEase开源代码进行前后端单独调试。

登录页面展示:

在Linux和容器环境部署请参考官方文档:

源码部署 - DataEase 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551862.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {for (int i 0; i < numsSize; i) {int x (nums[i] - 1) % numsSize;nums[x] numsSize;}int* ret malloc(sizeof(int) * numsSize);*returnSize 0;for (in…

遥感图像文本检索

遥感图像文本检索是一种通过自然语言描述&#xff0c;从大量遥感图像中搜索与之相关的图像的技术。它用于遥感解释任务中&#xff0c;帮助用户根据文字描述快速找到符合条件的遥感图像&#xff0c;这在城市规划、环境监测、灾害管理等领域具有重要应用意义。 实现这一技术的核…

线路交换与分组交换的深度解析

1. 线路交换 原理 线路交换是一种在通信双方之间建立固定通信路径的方式。当用户发起通信时&#xff0c;网络为其分配一条专用的物理通道&#xff0c;这条通道在整个通话过程中保持不变。这意味着在通话期间&#xff0c;其他用户无法使用这条线路。 优点 稳定性&#xff1a…

记录一次出现循环依赖问题

具体的结构设计&#xff1a; 在上面的图片中&#xff1a; UnboundBlackVerifyChain类中继承了UnboundChain类。但是UnboundChain类中注入了下面三个类。 Scope(“prototype”) UnboundLinkFlowCheck类 Scope(“prototype”) UnboundUserNameCheck类 Scope(“prototype”) Un…

【刷题6】一维前缀和、二维前缀和

目录 一、一维前缀和二、二维前缀和 一、一维前缀和 题目&#xff1a; 思路&#xff1a; 一、前缀和&#xff0c;时间复杂度O&#xff08;1&#xff09;&#xff0c;快速得到区间的值 二、预处理&#xff0c;公式——dp[i] dp[i-1] arr[i] 三、使用前缀和&#xff0c;根据…

VUE a-table 动态拖动修改列宽+固定列

实现效果 实现思路 自定义表头&#xff0c;在标题后面加两个标签&#xff0c;分别用来显示拖拽图标&#xff08;cursor: col-resize&#xff09;&#xff0c;和蓝色标记线&#xff08;有的时候鼠标移动过程中不一定会在表内&#xff0c;这个时候不显示图标&#xff0c;只显示蓝…

综合练习 学习案例

//验证码 前四位是字母 最后一位是数字 public class test1 {public static void main(String[] args){char [] charsnew char[52];for (int i 0; i <chars.length ; i) {if(i<25){chars[i](char)(i97);}else{chars[i](char)(i65-26);}}Random rnew Random();String cod…

828华为云征文|华为云Flexus云服务器X实例部署 即时通讯IM聊天交友软件——高性能服务器实现120W并发连接

营运版的即时通讯IM聊天交友系统&#xff1a;特点可发红包&#xff0c;可添加多条链接到用户网站和应用&#xff0c;安卓苹果APPPC端H5四合一 后端开发语言&#xff1a;PHP&#xff0c; 前端开发语言&#xff1a;uniapp混合开发。 集安卓苹果APPPC端H5四合一APP源码&#xff0…

语音转文字免费利器:助力高效办公与学习

语音转文字免费的软件如同一股清流&#xff0c;让我们能够更轻松地将语音信息转化为可编辑的文字内容。今天我们一起来分析它们的功能、特点以及如何为我们的生活和工作带来便利。 1.365在线转文字 链接直达&#xff1a;https://www.pdf365.cn/ 这是一个功能强大的在线工具…

量化必备!股票常用数据批量下载、定时更新,代码打包好了!

上一节课我详细演示了从tushare获取股票列表和基本信息并且配置定时更新任务的详细流程&#xff0c;旨在教会想要学习通过Python获取股票数据并且定期更新的朋友。 不过有很多朋友完全没有Python基础&#xff0c;如果一开始把大量时间花费在搞数据上&#xff0c;本末倒置不说&…

如果您忘记了 Apple ID 和密码,按照指南可重新进入您的设备

即使您的 iPhone 或 iPad 由于各种原因被锁定或禁用&#xff0c;也可以使用 iTunes、“查找我的”、Apple 支持和 iCloud 解锁您的设备。但是&#xff0c;此过程需要您的 Apple ID 和密码来验证所有权并移除激活锁。如果您忘记了 Apple ID 和密码&#xff0c;请按照我们的指南重…

【PyTorch】图像分割

图像分割是什么 Image Segmentation 将图像每一个像素分类 图像分割分类 超像素分割&#xff1a;少量超像素代替大量像素&#xff0c;常用于图像预处理语义分割&#xff1a;逐像素分类&#xff0c;无法区分个体实例分割&#xff1a;对个体目标进行分割全景分割&#xff1a;…

动态库的加载全过程

区分一组概念&#xff1a;逻辑地址&#xff0c;虚拟地址&#xff0c;物理地址。 逻辑地址&#xff1a;是我们的代码在编译过程&#xff0c;编译器帮对每一条代码所生成的指令所编写的地址。 物理地址&#xff1a;当程序被放入到内存中时&#xff0c;内存与每一条指令所对应的…

031集——文本文件按空格分行——C#学习笔记

如下图&#xff0c;读取每行文本&#xff0c;每行文本再按空格分开读取一个字符串&#xff0c;输出到另一个文本&#xff1a; CAD环境下&#xff0c;代码如下&#xff1a; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…

笔记本电脑如何改ip地址:操作指南与注意事项

在信息时代的浪潮中&#xff0c;网络已成为我们日常生活与工作中不可或缺的一部分。对于笔记本电脑用户而言&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。无论是出于网络安全、网络测试还是特殊网络环境等需求&#xff0c;了解如何修改笔记本电…

制造企业各部门如何参与生产成本控制与管理?

​国内制造业的分量可不轻&#xff0c;从日常生活用品到高端工业设备&#xff0c;中国制造几乎涵盖了各个领域。 不过很多制造业企业在管理方面确实存在一些难题&#xff1a;成本控制不容易&#xff0c;产品质量并不稳定&#xff0c;生产周期也常常较长。 一、中国制造业生产管…

仿真设计|基于51单片机的商用电子计价秤设计

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;通电时电子秤进入欢迎界面&#xff0c;显示“欢迎使用电子秤 设计学生…

【SQLite】基础操作

数据查询 SELECT 查询所有数据 SELECT *FROM tableName使用AND操作符 SELECT * FROM tableName WHERE id=? AND name=?使用OR操作符 SELECT * FROM tableName WHERE id=? OR name=?组合使用AND和OR SELECT * FROM tableName WHERE (id=? AND name=?) OR status=?多表查询…

vue3+PPTXjs 在线ppt预览

- 使用PPTXjs做ppt预览&#xff0c;有完整的代码包&#xff0c;基于jquery - vue3使用iframe引入用于预览ppt的网页&#xff0c;通过url参数传递需要预览的ppt链接 - 通过网页选择文件上传也可以通过下面的函数把文件转换成链接&#xff0c;实现在文件上传到服务器前就可以预…

Leetcode 11.乘最多水的容器(字节,快手面试题)

题目链接&#xff1a;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线&#xff0c;使得它们与 x 轴共同…