一. 背景
公司想要搞一个IOT物联网平台,本来是打算自己写,奈何时间有限,国内的IOT平台没有适合的都太通用了,所以找了ThingsBoard。该IOT平台在国外很火热,社区也很活跃,奈何国内文档少之又少,自己在源码编译这里就踩了不少坑,写出来分享给有需要的人!
二.环境准备
环境准备:
-
JDK 11(openjdk)
-
Maven 3.8.1+
-
node.js 16+
-
yarn
-
idea protobuf插件
-
idea lombok插件
-
PostgreSQL 11.7+
数据库准备:
不管用啥方式安装准备一个PostgreSQL数据库,然后创建一个名为‘thingsboard’的数据库,这里不多赘述
IDEA属性配置:
Help -> Edit Custom Properties
idea.max.intellisense.filesize=9999
重启IDE
三. 编译步骤
1. 拉取源代码
git clone https://github.com/thingsboard/thingsboard.git
2. 确保本地满足上述环境
3. 有能力的最好在代理的网络下编译(配置一个代理)
4. Idea导入项目
5. 配置maven
6. 配置jdk,最好是openjdk11
7. 前端依赖下载
先安装yarn
#全局安装yarn
npm install -g yarn
#测试是否安装成功
yarn -v
# 进入前端包内
cd ./ui-ngx
# 安装依赖
yarn
8. 编译后端服务
命令行执行:
mvn clean install -DskipTests
如下则编译成功:
**INFO**] Thingsboard ........................................ **SUCCESS**
[ 0.092 s]
[**INFO**] Netty MQTT Client .................................. **SUCCESS**
[ 1.319 s]
[**INFO**] Thingsboard Server Commons ......................... **SUCCESS**
[ 0.003 s]
[**INFO**] Thingsboard Server Common Data ..................... **SUCCESS**
[ 2.938 s]
[**INFO**] Thingsboard Server Common Utils .................... **SUCCESS**
[ 0.375 s]
[**INFO**] Thingsboard Server Common Messages ................. **SUCCESS**
[ 1.707 s]
[**INFO**] Thingsboard Actor system ........................... **SUCCESS**
[ 0.419 s]
[**INFO**] Thingsboard Server Stats ........................... **SUCCESS**
[ 0.168 s]
[**INFO**] Thingsboard Server Common Cluster API .............. **SUCCESS**
[ 5.117 s]
[**INFO**] Thingsboard Server Queue components ................ **SUCCESS**
[ 1.411 s]
[**INFO**] Thingsboard Server Common Cache .................... **SUCCESS**
[ 0.428 s]
[**INFO**] Thingsboard Server Commons ......................... **SUCCESS**
[ 0.003 s]
[**INFO**] Thingsboard Server Common Transport components ..... **SUCCESS**
[ 2.139 s]
[**INFO**] Thingsboard MQTT Transport Common .................. **SUCCESS**
[ 0.706 s]
[**INFO**] Thingsboard HTTP Transport Common .................. **SUCCESS**
[ 0.299 s]
[**INFO**] Thingsboard CoAP server ............................ **SUCCESS**
[ 0.279 s]
[**INFO**] Thingsboard CoAP Transport Common .................. **SUCCESS**
[ 1.469 s]
[**INFO**] Thingsboard LwM2M Transport Common ................. **SUCCESS**
[ 1.118 s]
[**INFO**] Thingsboard SNMP Transport Common .................. **SUCCESS**
[ 0.533 s]
[**INFO**] Thingsboard Server Common DAO API .................. **SUCCESS**
[ 0.466 s]
[**INFO**] Thingsboard Server Remote Edge wrapper ............. **SUCCESS**
[ 2.887 s]
[**INFO**] Thingsboard Server Version Control API ............. **SUCCESS**
[ 0.384 s]
[**INFO**] Thingsboard Script Invoke Commons .................. **SUCCESS**
[ 0.002 s]
[**INFO**] Thingsboard Server Script invoke API ............... **SUCCESS**
[ 0.406 s]
[**INFO**] Thingsboard Extensions ............................. **SUCCESS**
[ 0.002 s]
[**INFO**] Thingsboard Rule Engine API ........................ **SUCCESS**
[ 0.495 s]
[**INFO**] Thingsboard Server JS Client for remote JS execution **SUCCESS**
[ 0.228 s]
[**INFO**] Thingsboard Server DAO Layer ....................... **SUCCESS**
[ 3.634 s]
[**INFO**] Thingsboard Rule Engine Components ................. **SUCCESS**
[ 2.259 s]
[**INFO**] Thingsboard Server Transport Modules ............... **SUCCESS**
[ 0.003 s]
[**INFO**] Thingsboard HTTP Transport Service ................. **SUCCESS**
[ 13.655 s]
[**INFO**] Thingsboard MQTT Transport Service ................. **SUCCESS**
[ 13.699 s]
[**INFO**] Thingsboard CoAP Transport Service ................. **SUCCESS**
[ 13.089 s]
[**INFO**] Thingsboard LwM2m Transport Service ................ **SUCCESS**
[ 13.535 s]
[**INFO**] Thingsboard SNMP Transport Service ................. **SUCCESS**
[ 13.118 s]
[**INFO**] ThingsBoard Server UI .............................. **SUCCESS**
[ 47.668 s]
[**INFO**] Thingsboard Server Tools ........................... **SUCCESS**
[ 0.196 s]
[**INFO**] Thingsboard Rest Client ............................ **SUCCESS**
[ 0.339 s]
[**INFO**] ThingsBoard Server Application ..................... **SUCCESS**
[ 29.970 s]
[**INFO**] ThingsBoard Microservices .......................... **SUCCESS**
[ 0.021 s]
[**INFO**] ThingsBoard Docker Images .......................... **SUCCESS**
[ 0.258 s]
[**INFO**] ThingsBoard Version Control Executor ............... **SUCCESS**
[ 13.433 s]
[**INFO**] ThingsBoard Version Control Executor Microservice .. **SUCCESS**
[ 0.024 s]
[**INFO**] ThingsBoard JavaScript Executor Microservice ....... **SUCCESS**
[ 4.888 s]
[**INFO**] ThingsBoard Web UI Microservice .................... **SUCCESS**
[ 32.897 s]
[**INFO**] ThingsBoard Node Microservice ...................... **SUCCESS**
[ 0.035 s]
[**INFO**] ThingsBoard Transport Microservices ................ **SUCCESS**
[ 0.001 s]
[**INFO**] ThingsBoard MQTT Transport Microservice ............ **SUCCESS**
[ 0.025 s]
[**INFO**] ThingsBoard HTTP Transport Microservice ............ **SUCCESS**
[ 0.024 s]
[**INFO**] ThingsBoard COAP Transport Microservice ............ **SUCCESS**
[ 0.021 s]
[**INFO**] ThingsBoard LWM2M Transport Microservice ........... **SUCCESS**
[ 0.024 s]
[**INFO**] ThingsBoard SNMP Transport Microservice ............ **SUCCESS**
[ 0.022 s]
[**INFO**] **---------------------------------------------------------------
---------**
[**INFO**] **BUILD SUCCESS**
[**INFO**] **---------------------------------------------------------------
---------**
[**INFO**] Total time: 03:48 min
[**INFO**] Finished at: 2023-04-19T14:20:06+08:00
[**INFO**] **---------------------------------------------------------------
---------**
9. 初始化数据库
把模块dao/src/main/resources/sql文件夹复制到application/src/main/data下
修改配置文件数据源连接信息:(改成你创建的pg数据库地址)
执行application/src/main/java/org.thingsboard.server.ThingsboardInstallApplication初始化数据源
执行完成查看数据库中是否创建好了表:
10. 启动后端服务
执行application/src/main/java/org.thingsboard.server.ThingsboardServerApplication启动服务
就是正常的SpringBoot服务的启动,无报错即启动成功!
11. 启动前端服务
命令行:
cd ./ui-ngx
yarn run start
启动成功!
12. 访问测试
四. 常见问题
问题一:maven编译一直报错:
解决:这是jdk版本不对,一开始我命令行执行
mvn clean install -DskipTests
就一直报这个错,经排查,我本地环境变量配的是jdk17,而在idea中配置的是jdk11,命令行的mvn默认用的是环境变量,所以一直报错,把本地环境变量配置改成jdk11就好了!
问题二:代码中好多类找不到爆红启动报错
解决:要多类是需要经过编译出现的,所以必须先install编译后才能执行。