1、官网
2、环境依赖
- Java 11
- maven 3.1.0+(我自己是 3.6.1)
- IDEA 2023.3.5(这个没啥硬性要求)
- PostgreSQL 13.4, compiled by Visual C++ build 1914, 64-bit
3、版本选择
3.6 开始要使用 jdk17,所以我选择 3.5.1版本thingsboard
4、源码下载
有两种方式,一种是用 git clone
git clone -b v3.5.1 https://github.com/thingsboard/thingsboard.git-b 指定分支
另一种直接下源码
解压到本地某个文件夹下,将maven配置跟仓库也放一起
maven settings.xml
<localRepository>F:\open-thingsboard\repository</localRepository>
<mirrors>
<!-- 阿里云镜像 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!-- maven官方2号镜像 -->
<mirror>
<id>repo2</id>
<name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror></mirrors>
5、源码构建
源码构建最好搭个梯子,因为thingsboard很多依赖包都是外网的,国内可能会下不下来,搭个梯子可以省去90%源码构建过程中的问题。
进入 thingsboard-3.5.1 文件夹下运行命令
mvn -s F:\open-thingsboard\conf\settings.xml -T 0.8C clean install -DskipTests
-s <settings文件>:指定配置文件
-T <threadCount>:指定构建过程中可用的处理器核心数或明确的线程数。
其中 <threadCount> 可以是数字,表示并发线程数;也可以是
C
或c
加上一个比例值,例如0.5C
表示使用一半的CPU核心数进行并行构建。# 明确指定8个线程进行构建
mvn -T 8 clean package
# 使用80%CPU核心数进行并行构建
mvn -T 0.8C clean packag
报错1:
Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:yarn (yarn install) on project ui-ngx: Failed to run task: 'yarn install' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 128 (Exit value: 128) -> [Help 1]
解决:
确认一下 maven仓库\repository\com\github\eirslett\frontend-maven-plugin\1.12.0 下有没有
frontend-maven-plugin-1.12.0.jar 文件,没有网上下一个,有的话,再执行一次就可以了。
报错2:
Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.11:invoke (default) on project monitoring: org.gradle.tooling.GradleConnectingException:Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-7.1.1-bin.zip'
解决:
手动从https://services.gradle.org/distributions/gradle-7.1.1-bin.zip下载所需依赖,放入gradle默认仓库下 C:\Users\Administrator\.gradle\wrapper\dists\gradle-7.1.1-bin\f29rtwfnc96ub43tt7p47zsru\
报错3:
Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:yarn(yarn pkg)on project js-executor:Failed to run task: 'yarn run pkg' failed. org.apache.commons.exec.ExecuteException:Process exited with an error:2(Exit value:2)->[Help 1]
解决:
日志网上翻,会发现一个
Not found in remote cache:
{"tag":"v3.4","name":"node-v16.15.0-win-x64"}解决办法就是上 github 上下 node-v16.15.0-win-x64,把它放到 C:\Users\Administrator\.pkg-cache\v3.4 下面,并改名为 fetched-v16.15.0-win-x64Releases · vercel/pkg-fetch · GitHubA utility to fetch or build patched Node binaries used by `pkg` to generate executables. This repo hosts prebuilt binaries in Releases. - Releases · vercel/pkg-fetch
https://github.com/vercel/pkg-fetch/releases
报错4:
Failed to execute goal org.apache.maven.plugins:maven-clean-plugins:2.5:clean (default-clean)on project js-executor:Failed to clean project: Failed to delete F:\open-thingsboard\thingsboard-3.5.1\msa\js-executor\target\node\node.exe
解决:
问题的原因是之前项目构建过,因为别的原因失败了,但是F:\open-thingsboard\thingsboard-3.5.1\msa\js-executor\target\node\ 下存在了node.exe 现在清理不掉,手动清理掉,如果提示不让清理,到任务管理器里面杀掉进程后清理掉就行。
成功:
6、IDEA运行
用IDEA打开项目
6.1 修改项目Maven设置
6.2 修改项目JDK设置
6.3 数据库配置
6.3.1 postgres 新建一个库 thingsboard
6.3.2 修改application模块thingsboard.yml
6.3.3 将dao模块下的 canssandra 和 sql 拷贝到 application模块下data文件夹下
6.4 运行 ThingsboardInstallApplication
报错1:
Error running ThingsboardInstallApplication.Command line is too long.
解决:
在 Run/Debug Configurations 修改程序的 Shorten command line 为 JAR manifest
点击 Modify options
选择 Shorten command line
选择 JAR manifest
报错2:
java.lang.RuntimeException: resource lwm2m object model from file
Caused by: java.nio.file.NoSuchFileException: lwm2m-registry
解决:
thingsboard.yml 配置 install.data_dir 参数
install: data_dir: '${INSTALL_DATA_DIR:F:\open-thingsboard\thingsboard-3.5.1\application\src\main\data}' load_demo: '${INSTALL_LOAD_DEMO:true}' load_demo 参数配置DefaultSystemDataLoaderService是否生成演示数据,一般也配置上true
成功:
6.5 运行 ThingsboardServerApplication
报错1:
Error running ThingsboardServerApplication. Command line is too long. Shorten the command line and rerun.
解决:
处理方式与6.4报错1是一样的。
成功:
6.6 登录
浏览器输入 localhost:8080/login
输入系统管理员账号 sysadmin@thingsboard.org / sysadmin
6.7 说明
用这种方式运行的 thingsboard,业务数据、遥测数据、最新遥测数据,都在 postgres 一个库里面。