欢迎加入ThingsBoard技术交流群


这里可复制Q群号:69998183

关注“云腾五洲”:获取二开ThingsBoard物联网平台演示

交流社区:ThingsKit-ThingsBoard社区

环境安装

开发环境要求:
Jdk 1.8版本
Postgresql 9以上
Node.js
Npm
Maven 3.6以上
Git工具
Idea开发工具
Redis

JDK

下载安装

JDK官方下载地址: https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

JDK版本选择JDK8,我本地环境是Windos10 64位,所以选择jdk-8u221-windows-x64.exe

下载好了之后直接默认安装就行

配置环境变量

步骤1:
在JAVA_HOME中增加JDK的安装地址:C:\Program Files\Java\jdk1.8.0_221

步骤2:
在CLASSPATH中增加JDK的安装地址中的文件:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

步骤3:
在Path中增加JDK的地址:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

步骤4
输入以下命令

java -version

如果能出现以下的提示信息,就算安装成功了

安装IDEA

参考:IDEA安装教程

安装Maven

步骤1:下载maven,进入地址:http://maven.apache.org/download.cgi

步骤2:下载到本地

步骤3:配置环境变量
增加MAVEN_HOME,即maven的地址:D:\tb\apache-maven-3.6.1-bin,请注意,如果直接解压,有可能会有两个apache-maven-3.6.1-bin

MAVEN_OPTS,参数是 -Xms128m -Xmx1024m

修改Path,增加Maven的地址%MAVEN_HOME%\bin;

测试Maven安装,打开命令行工具。使用命令mvn -v,如果能出现以下提示,即安装成功

Nodejs安装

步骤1:下载Nodejs安装包,Nodejs官网地址:https://nodejs.org/en/download/

步骤2:安装完成后,使用命令查看Nodejs是否已经安装完成,能出现以下提示说明已经安装成功

安装git

步骤1:下载git安装包,git官网地址是:https://git-scm.com/download/win

步骤2:安装完成后,使用命令行测试git

安装npm全局依赖

步骤1:使用管理员CMD命令行,执行下面命令

#npm 环境读取环境变量包
npm install -g cross-env#webpack打包工具
npm install -g webpack

安装redis

Redis安装参考:https://www.iotschool.com/wiki/redis

环境安装到此结束,接下来是通过Git拉取代码。

克隆thingsboard代码

确定代码存放位置

在本地创建代码存放位置的文件目录,然后进入当前目录点击鼠标右键,选择Git Bash Here

输入git命令克隆源代码

git clone https://github.com/thingsboard/thingsboard.git

耐心等待一段时间后,看到以下界面就算下载成功

切换git分支

默认下载的代码是master主分支的,我们开发需要切换到最新版本的分支。

查看项目源码的所有分支,下载源码后,需要进入到thingsboard文件夹

发现最新发布的版本是2.4,所以我这里选择2.4,当然你可以根据自己的情况进行分支选择

输入命令以下,即可切换至2.4的分支

git checkout release-2.4

看到下图这样,即切换成成功

准备工作

外网连接

因为TB在编译过程中需要依赖很多国外的包,那么需要外网才能连接,有连接外网支持,可以到社区求助:https://www.iotschool.com/topics/node8

设置Maven为淘宝镜像

工程是基于Maven管理,直接通过idea open,之后会自动下载各种依赖包。依赖包的默认存储地址为:C:\Users\用户名.m2\repository,内容如下:

$tree ~/.m2 -L 2
/home/jay/.m2
└── repository├── antlr├── aopalliance├── asm├── backport-util-concurrent├── ch...

一般情况下,使用官方镜像更新依赖包,网速不稳定,可将Maven镜像源设置为淘宝的,在maven安装包目录下找到settings.xml设置

大概位置截图:

把settings.xml里面内容设置成以下:

<mirrors><mirror><!--This sends everything else to /public --><id>aliyun_nexus</id><mirrorOf>*,!maven_nexus_201</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>
</mirrors>

不会设置的,可以参考这个文件:https://cdn.iotschool.com/iotschool/settings.xml

thingsboard QQ群也又这个资源:121202538

设置npm为淘宝镜像

同上,网速不好npm过程中也会下载失败,这是导致很多同学thingsboard编译失败的主要原因,所以我们在进行编译之前,也将npm替换为淘宝镜像:

npm install -g mirror-config-china --registry=http://registry.npm.taobao.org        #使用淘宝镜像
npm config get registry                                                             #查询当前镜像
npm config rm registry                                                              #删除自定义镜像,使用官方镜像
npm info express

设置IDEA管理员启动

我本地开发环境编译项目使用IDEA工具进行编译,所以需要设置管理员启动,这样才有所有的权限执行编译命令。
步骤1:点击IDEA图标右键,选择属性。

步骤2:点击兼容性-更改所有用户设置-以管理员身份运行此程序

开始编译

编译项目跟网速有关,最好连接上外网进行编译,一般5~30分钟都有可能,超过30分钟要检查你的网络。

清理项目编译文件

使用IDEA Maven工具进行清理

输入编译命令开始编译

在IDEA控制台(左下方)Terminal输入以下命令进行编译:

mvn clean install -Ddockerfile.skip=false

等一段时间后,看到下面这张图就算编译成功,如果没有编译成功请按照本教程最后的常见问题进行排查,一般都是网络问题。如果还有问题,请到社区thingsboard专题中提问。

常见问题

本教程只会罗列IoTSchool小编在thingsboard编译过程中遇到的问题,如果有其他问题,请到社区thingsboard专题中提问,会有专家为你解答。

缓存导致编译失败

每次编译失败进行二次编译时,要清理缓存,并杀死遗留进程
步骤1:执行下面命令,杀死遗留进程

taskkill /f /im java.exe

步骤2:使用IDEA Maven工具进行清理

温馨提示:要进行二次编译前,最好重启一次电脑!

Server UI 编译失败

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:npm (npm install) on project ui: Failed to run task: 'npm install' failed. (error code 1) -> [Help 1]

如果遇到这个问题,可从以下几个原因进行分析:

原因1:node、npm版本号问题

本地环境安装的node、npm版本号与源码中pom.xml文件配置的版本号不一致。

解决方案:
步骤1:使用node -v、npm -v查看安装的node和npm版本号

步骤2:修改源码中pom.xml文件中的版本号

<configuration><nodeVersion>v12.13.1</nodeVersion><npmVersion>6.12.1</npmVersion>
</configuration>

需要修改的文件有三处,位置如下:

原因2:node-sass下载失败

编译Server UI时,会下载node-sass依赖,如果因为网络原因没有下载成功,也会编译失败。如果你是按照本本教材一步一步来的,应该不会有问题,上面准备工作中,将npm镜像源切换为淘宝,那么下载会很快的。

[INFO] Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-72_binding.node
[ERROR] Cannot download "https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-72_binding.node":
[ERROR]
[ERROR] ESOCKETTIMEDOUT
[ERROR]
[ERROR] Hint: If github.com is not accessible in your location
[ERROR]       try setting a proxy via HTTP_PROXY, e.g.
[ERROR]
[ERROR]       export HTTP_PROXY=http://example.com:1234
[ERROR]
[ERROR] or configure npm proxy via
[ERROR]
[ERROR]       npm config set proxy http://example.com:8080
[INFO]
[INFO] > node-sass@4.12.0 postinstall F:\workspace\thingsboard\thingsboard\ui\node_modules\node-sass
[INFO] > node scripts/build.js
[INFO]

解决方案:切换镜像源为淘宝

原因3:二次编译导致残留进程

报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project ui: Failed to clean project: Failed to delete F:\workspace\thingsboard\thingsboard\ui\target\node\node.exe -> [Help 1]

解决方案:重启电脑,清理缓存

Server Tool编译失败

[ERROR] Failed to execute goal on project tools: Could not resolve dependencies for project org.thingsboard:tools:jar:2.4.3: Failed to collect dependencies at org.eclipse.paho:org.eclipse.paho.client.mqttv3:jar:1.1.0: Failed to read artifact descriptor for org.eclipse.paho:org.eclipse.paho.clien
t.mqttv3:jar:1.1.0: Could not transfer artifact org.eclipse.paho:org.eclipse.paho.client.mqttv3:pom:1.1.0 from/to aliyun_nexus (http://maven.aliyun.com/nexus/content/groups/public/): Failed to transfer file http://maven.aliyun.com/nexus/content/groups/public/org/eclipse/paho/org.eclipse.paho.cli
ent.mqttv3/1.1.0/org.eclipse.paho.client.mqttv3-1.1.0.pom with status code 502 -> [Help 1]

一般由于网络原因,IoTSchool小编至少编译了3次才成功,每次编译都重启电脑,并清理环境。

解决方案:如果使用的是mvn clean install -DskipTests命令进行编译,那么就多尝试几次,每次编译前,要清理环境。

参考:https://github.com/thingsboard/performance-tests/issues/10

JavaScript Executor编译失败

JavaScript Executor Microservice编译失败

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:npm (npm install) on project js-executor: Failed to run task: 'npm install' failed. (error code 2) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :js-executor

原因:本地缓存缺少fetched-v10.15.3-linux-x64和fetched-v10.15.3-win-x64这两个文件。

解决方案:
步骤1:下载这两个文件到本地,下载后记得重命名,下载地址:https://github.com/zeit/pkg-fetch/releases

步骤2: 将下载的两个文件放到:放到:C:\Users\你的用户名.pkg-cache\v2.6。并将名字分别修改为:fetched-v10.15.3-linux-x64和fetched-v10.15.3-win-x64

参考:https://github.com/thingsboard/thingsboard/issues/2084

License检查不通过

[ERROR] Failed to execute goal com.mycila:license-maven-plugin:3.0:check (default) on project thingsboard: Some files do not have the expected license header -> [Help 1]

解决方案:在根目录pom.xml中屏蔽license-maven-plugin

搜索license-maven-plugin,将整个plugin都注释掉

Web UI编译失败

Web UI编译失败请参考Server UI编译失败第一个原因

maven:Could not resolve dependencies for project org.thingsboard:application:

错误信息

[ERROR] Failed to execute goal on project application: Could not resolve dependencies for project org.thingsboard:application:jar:2.4.1: The following artifacts could not be resolved: org.thingsboard.rule-engine:rule-engine-components:jar:2.4.1, org.thingsboard:dao:jar:2.4.1: Could not find artifact org.thingsboard.rule-engine:rule-engine-components:jar:2.4.1 in jenkins (http://repo.jenkins-ci.org/releases) -> [Help 1]

解决方案:根目录下去maven编译,不要在每个单独编译,否则不能自动解决依赖,如果你已经在子模块进行了编译,请回到根目录先clean一下,再重新编译。

maven:Failed to delete tb-http-transport.rpm

错误信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project http: Failed to clean project: Failed to delete D:\my_project\thingsboard\transport\http\target\tb-http-transport.rpm -> [Help 1]

解决方案:第一次编译失败,再次编译可能会提示该错误,可以手动到报错路径删除,如果提示文件正在使用,需要在任务管理器杀死java进程后再手动删除。

npm:npm:cb() never called!

错误信息:

npm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\yuren\AppData\Roaming\npm-cache\_logs\2019-11-06T10_55_28_258Z-debug.log

解决方案:
尝试npm cache clean --force 后再次npm install 无果;
尝试更换淘宝镜像源后再次npm install 无果;
怀疑有些包下载需要翻墙,全局代理翻墙后问题依然存在;
参考网上关闭所有代理后问题依然存在;
通过log日志分析最后一个解包报错的地方,屏蔽需要的material-design-icons,新modules rxjs仍然报错;

extract material-design-icons@3.0.1 extracted to node_modules\.staging\material-design-icons-61b4d55e (72881ms)
extract rxjs@6.5.2 extracted to node_modules\.staging\rxjs-e901ba4c (24280ms)

参考npm ERR cb() never called 执行

npm install --no-package-lock

之后提示npm ERR! path git,添加git 到环境变量后正常。

npm:npm ERR! path git

错误信息

npm ERR! path git
npm ERR! code ENOENT
npm ERR! errno ENOENT
npm ERR! syscall spawn git
npm ERR! enoent Error while executing:
npm ERR! enoent undefined ls-remote -h -t git://github.com/fabiobiondi/angular-

解决方案:添加git到环境变量。

No compiler is provided in this environment

错误信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.
1:compile (default-compile) on project netty-mqtt: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on
a JRE rather than a JDK?

需要在环境变量中设置java,包含%JAVA_HOME%bin;%JAVA_HOME%lib;

更多问题,请到社区解决:https://www.iotschool.com/topics/node8

Thingsboard入门教程:本地环境搭建和源码编译安装,献给thingsboard编译失败的同学,教程不断完善中,文章最后是thingsboard常见编译失败的问题总结相关推荐

  1. SRS流媒体服务器——单机环境搭建和源码目录介绍

    SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...

  2. Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档

    目 录 附录A 修改记录 ii 第1章 Spreadtrum Android的环境搭建 1-1 1.1 安装Ununtu 1.1-1 1.2 更新Ubuntu系统软件 1.2-1 1.3 安装合适的g ...

  3. 深入谷歌开源项目【1】 - Camer2 - 环境搭建和源码编译

    前言:搞机器视觉,目前一般都有用摄像模组,或者工业相机,可是如果要搞到消费类,手机却不行.因为,手机上有个各种特效,这些都会对视觉效果有影响.所以,要在手机上搞,必须对手机的系统上的摄像头应用能够底层 ...

  4. JAVA入门·JAVA开发环境搭建之卸载JDK安装JDK

    JAVA开发环境搭建 卸载JDK 1.删除Java的安装目录 我的电脑--属性--高级系统设置--环境变量--系统变量--JAVA_HOME--Java的安装目录 2.删除JAVA_HOME 3.删除 ...

  5. python从入门到精通图片_Python从入门到精通之环境搭建教程图解

    本章内容: 一.下载python安装包 二.选择适合自己系统的文件,进行下载 Windows环境安装(Windows 10) 三.Python解释器的安装 双击python-3.7.4-amd64.e ...

  6. php本地环境搭建教程

    http://jingyan.baidu.com/article/90bc8fc87f3cfff653640c24.html 如何在本地搭建php是大家都关注的,php环境搭建可以说比较容易也可以说比 ...

  7. Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)

    Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) 文章目录 Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) ...

  8. 微信公众号本地环境搭建(解决微信接口需要公网地址,但是只有本地环境的问题)

    微信公众号本地环境搭建(解决微信接口需要公网地址,但是只有本地环境的问题) 置顶2018年01月08日 17:22:13 阅读数:342 目前移动开发处于比较火的的趋势,很多的开发者都跃跃欲试,目前移 ...

  9. 大数据入门学习之环境搭建

    一:环境搭建:VM.CentOS7安装及网络配置 大数据入门首先需要搭建环境,接下来的三篇文章均是环境搭建部分的内容. 首先我们要安装虚拟机及linux系统 一.安装虚拟机VM 官网下载VM虚拟机:这 ...

最新文章

  1. 对外星智能的搜索得到了重大的升级
  2. swift为UIView添加extension扩展frame
  3. DELL服务器引导光盘图片及下载链接
  4. ASP.NET中AJAX的UpdatePannel控件的用法
  5. make 命令_Vim 命令大全
  6. 教育部最新公布!2019年高校新增和撤销了这些本科专业
  7. [2019人工智能实战_廖盈嘉]第1次个人作业
  8. php 生存分析,HPA数据库08.做生存分析
  9. 程序买卖(一舟,改自网络)
  10. Python使用wordnet工具计算词集与词条基本用法(三)
  11. 前嗅ForeSpider教程:采集图片/视频/资源文件的链接地址 1
  12. Kakao Talk母公司第四季净利润暴跌80%
  13. git学习(五)分支操作和解决冲突
  14. 每日一题 字典序的第K小数字
  15. 保镖机器人作文_【保镖的作文】_玛雅作文网
  16. tensorflow与pytorch 一起安装
  17. 获取Windows 10上文件资源管理器的帮助
  18. vinted是什么平台以及特点
  19. win10关闭电池保护模式_Windows10如何关闭电源保护模式?
  20. Android自定义视频播放器(三)

热门文章

  1. oyente—合约漏洞检测工具安装
  2. ArduinoUNO+ESP8266实现MQTT简单发布(不烧录ESP8266)
  3. 富士XT3 xf16-55 f2.8 胶片性能体验测试
  4. 在线提取视频中的字幕(亲测有效)
  5. mysql统计一年12个月的数据,当某个月没数据的时候自动补0
  6. 六轴机械臂DIY(四)机械模型重建及DH法建模
  7. python 栈的基本操作
  8. 2017酷家乐秋招笔试题——后台开发
  9. 太牛了!淘宝十年架构变迁
  10. Java实现肯德基点餐系统