当前位置: 首页 > news >正文

保姆级避坑指南:Windows 10/11下用IDEA+PostgreSQL搞定ThingsBoard 3.4源码编译与启动

Windows 10/11下IDEA+PostgreSQL高效编译ThingsBoard 3.4源码实战手册

作为一名长期深耕物联网领域的开发者,我深知从零开始搭建ThingsBoard开发环境的痛苦。本文将分享我在Windows平台上用IDEA和PostgreSQL成功编译运行ThingsBoard 3.4的完整经验,特别针对国内开发者优化了每个环节。

1. 环境准备与工具选型

在开始之前,我们需要确保所有基础工具就位。不同于简单的"安装JDK+Maven"这类泛泛而谈的建议,我将给出经过验证的具体版本组合:

必备工具清单

  • JDK 11(推荐Azul Zulu 11.52.13)
  • Apache Maven 3.8.6(不要使用3.9+版本)
  • Node.js 16.20.0(LTS版本)
  • PostgreSQL 14.9(兼容性最佳)
  • IntelliJ IDEA 2023.2+(Ultimate版最佳)

注意:ThingsBoard 3.4对JDK 17存在兼容性问题,务必使用JDK 11。我曾尝试用OpenJDK 17编译,结果在Jackson依赖解析阶段就失败了。

环境变量配置要点

# 检查Java版本 java -version # 应该显示类似: # openjdk version "11.0.18" 2023-01-17 LTS # 检查Maven版本 mvn -v # 应显示Apache Maven 3.8.x

2. 源码获取与预处理

直接从GitHub克隆源码看似简单,但有几个关键细节常被忽略:

# 使用SSH方式克隆(比HTTPS更稳定) git clone -b release-3.4 git@github.com:thingsboard/thingsboard.git # 进入项目目录后执行预处理 cd thingsboard git submodule update --init --recursive

国内开发者特别建议

  1. 如果遇到submodule更新失败,可尝试修改.gitmodules文件中的URL:
    [submodule "msa/blackbox-tests"] path = msa/blackbox-tests url = https://gitee.com/mirrors/thingsboard-black-box-tests.git
  2. 对于网络不稳定情况,推荐使用GitHub镜像站:
    git config --global url."https://hub.fastgit.xyz/".insteadOf https://github.com/

3. Maven编译的深度优化

原始教程中简单的mvn clean install命令在国内环境下往往需要数小时。经过多次实践,我总结出以下优化方案:

加速编译配置

<!-- settings.xml 关键配置 --> <settings> <localRepository>D:\maven_repo</localRepository> <mirrors> <mirror> <id>aliyun</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central,jcenter,google,spring-plugin</mirrorOf> </mirror> </mirrors> <profiles> <profile> <id>fast</id> <properties> <maven.compiler.fork>true</maven.compiler.fork> <maven.compiler.threads>4</maven.compiler.threads> </properties> </profile> </profiles> </settings>

推荐编译命令

# 多线程编译(根据CPU核心数调整) mvn -T 1.5C clean install -DskipTests -Dmaven.compile.fork=true # 遇到失败时恢复编译 mvn clean install -rf :模块名 -DskipTests

常见编译问题解决方案:

错误类型表现特征解决方案
依赖下载失败Could not transfer artifact删除本地仓库对应目录重试
内存不足GC overhead limit exceeded设置MAVEN_OPTS=-Xmx4g -XX:MaxPermSize=512m
版本冲突NoSuchMethodError执行mvn dependency:tree排查

4. IDEA项目配置精要

导入项目后,这些配置项至关重要却常被忽视:

  1. 编译器设置

    • File → Settings → Build → Compiler → Java Compiler
    • 所有模块的Target bytecode version设为11
    • 勾选"Use compiler: Eclipse"
  2. 注解处理器

    Settings → Build → Compiler → Annotation Processors ✔ Enable annotation processing ✔ Obtain processors from project classpath
  3. 运行配置模板

    // 添加VM参数: -Dspring.jpa.hibernate.ddl-auto=update -Dspring.profiles.active=dev -Dtb.license.file=license.data

数据库连接池优化

# application-dev.yml spring: datasource: hikari: maximum-pool-size: 20 connection-timeout: 30000 idle-timeout: 600000 max-lifetime: 1800000

5. PostgreSQL实战配置

不同于简单的"创建数据库",生产级配置应该这样:

-- 创建专用用户 CREATE USER tb_user WITH PASSWORD 'thingsboard'; CREATE DATABASE thingsboard WITH OWNER = tb_user ENCODING = 'UTF8'; GRANT ALL PRIVILEGES ON DATABASE thingsboard TO tb_user; -- 关键参数调整 ALTER SYSTEM SET shared_buffers = '4GB'; ALTER SYSTEM SET effective_cache_size = '12GB'; ALTER SYSTEM SET maintenance_work_mem = '1GB';

性能监控查询

-- 检查连接数 SELECT count(*) FROM pg_stat_activity; -- 查看锁等待 SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid AND blocking_locks.pid != blocked_locks.pid;

6. 服务启动与排错指南

当所有准备就绪后,启动服务时仍需注意:

系统服务启动顺序

  1. tb-core(核心服务)
  2. tb-rule-engine(规则引擎)
  3. tb-transport(传输层)
  4. tb-web-ui(前端界面)

常见启动错误处理

  • Cassandra连接失败:即使使用PostgreSQL,3.4版本仍会检查Cassandra配置。解决方案:

    // 在application-dev.yml中添加: cassandra: enabled: false
  • License验证失败:从源码编译需要添加license文件:

    # 在项目根目录创建license.data echo "dev-license" > license.data
  • 前端资源加载404:确保执行了:

    cd ui-ngx npm install npm run build

性能监控端点

http://localhost:8080/actuator/health http://localhost:8080/actuator/metrics http://localhost:8080/actuator/threaddump

经过这些优化配置,在我的i7-12700H/32GB开发机上,完整编译时间从最初的2小时缩短到35分钟,服务启动时间控制在2分钟内。记住,物联网平台的本地开发环境搭建是个系统工程,每个环节的精细调优都能带来显著效率提升。

http://www.jsqmd.com/news/909042/

相关文章:

  • 革命性Kindle封面修复方案:5分钟解决电子书封面损坏的技术指南
  • Agent 智能体爆发前夜:从多步推理到自主执行的工程化落地
  • 临沂代理记账公司哪家专业?誉诚财税:10年经验+本地服务,记账报税零差错!临沂老板公认的靠谱记账公司推荐 - 栗子测评
  • mg3680,g3810,mg3640s,g5080,g3800,g4800,ip2780,ts3380报错5B00,P07,E08,5b02,1704,1700,5b04废墨垫清零,亲测有用
  • 2026年防爆灯厂家推荐榜单:LED防爆灯、仓库/工厂/加油站专用防爆灯及防爆配电箱品牌实力解析与选购指南 - 企业推荐官【官方】
  • 三步搞定国家教育平台电子课本下载:免费高效的tchMaterial-parser解析工具
  • 抖音视频批量下载终极指南:如何快速免费获取无水印高清素材
  • 终极指南:如何用RevokeMsgPatcher实现微信QQ防撤回与多开功能
  • 终极指南:如何让2008-2017年老款Mac免费升级到最新macOS系统
  • 用LIBSVM在西瓜数据集上实战:线性核与高斯核到底差在哪?(附Python代码与可视化)
  • Carnice-9b与Hermes Agent集成指南:从基础到高级应用全流程
  • 合肥黄金上门回收怎么选?福运来专业透明口碑好 - 上门黄金回收
  • Qwen2.5-0.5B-Instruct性能测试:CPU环境下如何优化推理速度?实测数据分享
  • 2026年南京贵金属回收/黄金回收/金项链/铂金/白银/旧银回收及奢侈品包包回收品牌推荐榜:专业诚信与高效变现首选! - 品牌企业推荐师(官方)
  • 3分钟快速上手:Windows原生读写Btrfs文件系统完整指南
  • E7Helper:第七史诗自动化脚本的终极解决方案
  • 本地数据库客户端怎么远程连回家里服务器?CloudBeaver + cpolar 搭一个浏览器版数据库工作台
  • 数据平权:医疗与社交数据同权保护下的行业变革与挑战
  • 告别轮询!用STM32CubeMX和HAL库轻松玩转STM32F407的CAN中断接收
  • Vivado+PetaLinux 2017.4在Ubuntu 20.04下的完整环境搭建与联调实战(含P4组件安装)
  • 从源码到部署:jina-embeddings-v2-base-code的完整工作流解析
  • ncmdump终极教程:5分钟掌握网易云NCM音乐解密技巧
  • 如何快速上手talkie-1930-13b-it:预1931英文文本训练的AI模型
  • 具身智能-三层结构
  • 2026年当下,如何精准联系到专业的激光雷达体积测量系统生产商 - 速递信息
  • 即梦怎么去水印软件|2026实测最全即梦去水印方法 - 科技热点发布
  • 为什么选择Gemma 4 21B-A4B-it REAP?21.34B参数模型的显存优化方案
  • 软考中级非计算机专业能考过吗?零基础备考可行性分析 - 众智商学院职业教育
  • YuukiPS启动器:如何用智能工具彻底解决原神多账号切换难题
  • CapRL-Video-4B vs 传统视频模型:10 组关键指标全面评测 [特殊字符]