ThingsBoard源码编译和Idea运行
ThingsBoard 源码地址:https://github.com/thingsboard/thingsboard,从 3.7 版本之后,要求 JDK17。官方提供了源码编译的文档:Building from sources
源码编译
下载代码:
git clone [email protected]:thingsboard/thingsboard.git
设置当前 JDK 版本为 17 以上。这里我使用 sdkman 切换 java。
sdk use java 17.0.12-tem
终端编译源码:
cd thingsboard
mvn clean install -Dmaven.test.skip=true
如果在编译过程中提示找不到 Gradle:
[ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke (default) on project http: org.gradle.tooling.BuildException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-7.3.3-bin.zip'. -> [Help 1]
往上查看详细异常日志:
* What went wrong:
Could not compile build file '/Users/chensoul/Codes/github/thingsboard/packaging/java/build.gradle'.
> startup failed:
General error during conversion: Unsupported class file major version 65
java.lang.IllegalArgumentException: Unsupported class file major version 65
可以看到是 JDK 版本过高的原因。需要确认 JDK 版本使用 17,不能是 21。
如果 maven 下载太慢,则修改 mirrors 节点如下:
<mirrors>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:dont-match-anything-mate:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
</mirror>
<mirror>
<id>aliyun-central</id>
<name>aliyun-central</name>
<url>https://maven.aliyun.com/nexus/content/repositories/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>aliyun-jcenter</id>
<name>aliyun-jcenter</name>
<url>https://maven.aliyun.com/nexus/content/repositories/jcenter</url>
<mirrorOf>jcenter</mirrorOf>
</mirror>
</mirrors>
Idea 中运行
首先 IDEA 需要安装 lombok 和 Protobuf 相关插件,有个 proto 文件生成的java代码过大(TransportProtos
),默认是不会解析的。需要编辑idea 的属性(Help -> Edit Custom Properties),加入idea.max.intellisense.filesize=3000
,将上限提高到3M。
准备 postgres 数据库,使用 docker-compose 运行:
services:
postgres:
restart: always
image: "postgres:15"
ports:
- "5432:5432"
environment:
POSTGRES_DB: thingsboard
POSTGRES_PASSWORD: postgres
在 idea 中打开项目,然后将 dao/src/main/resources/sql 目录拷贝到 application/src/main/data 目录下。
运行 application 模块下的 ThingsboardInstallApplication 类,初始化数据库。
运行 application 模块下的 ThingsboardServerApplication 类,启动 thingsboard。
启动成功之后,在浏览器访问 http://localhost:8080/login, ThingsBoard 默认账户
- 系统管理员: [email protected] / sysadmin
- 租户管理员:[email protected] / tenant
- 客户用户: [email protected] / customer