Thingsboard开发环境搭建及编译项目

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Thingsboard开发环境搭建及编译项目

IoTSchool   2020-03-13 我要评论
## 交流QQ群 ![如果安装有其他问题,可以到QQ群求助](https://cdn.iotschool.com/uploads/20200221/946e76b7e650f9c36e3b646f1546d581.png) 如果安装有其他问题,可以优先查看本文后面的各种编译问题解决方案,如果还不行可以到交流群求助:121202538 ## 环境安装 开发环境要求: 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 ![image.png](https://cdn.iotschool.com/uploads/20200214/9454116a692859637a902a04b93317aa.png) 下载好了之后直接默认安装就行 ![image.png](https://cdn.iotschool.com/uploads/20200214/1f9b969e92732734a54c8564fcdcf637.png) **配置环境变量** **步骤1:** 在JAVA_HOME中增加JDK的安装地址:C:\Program Files\Java\jdk1.8.0_221 ![image.png](https://cdn.iotschool.com/uploads/20200214/47544819668882894dd071a13caaf102.png) **步骤2:** 在CLASSPATH中增加JDK的安装地址中的文件:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ![image.png](https://cdn.iotschool.com/uploads/20200214/beeb26d512d627ce67af4f38552757b4.png) **步骤3:** 在Path中增加JDK的地址:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ![image.png](https://cdn.iotschool.com/uploads/20200214/afd1e62af1141baa0c1560553a490376.png) **步骤4** 输入以下命令 ``` java -version ``` 如果能出现以下的提示信息,就算安装成功了 ![image.png](https://cdn.iotschool.com/uploads/20200214/377377027d1b65dae67e795bb287c779.png) ### 安装IDEA 参考:[IDEA安装教程](https://www.iotschool.com/topics/72) ### 安装Maven 步骤1:下载maven,进入地址:http://maven.apache.orghttps://img.qb5200.com/download-x/download.cgi ![image.png](https://cdn.iotschool.com/uploads/20200214/786e835ef4e2fbb0162e9259514076e6.png) 步骤2:下载到本地 ![image.png](https://cdn.iotschool.com/uploads/20200214/77470aa9e82d09c5c95e74e6c16e8bba.png) 步骤3:配置环境变量 增加MAVEN_HOME,即maven的地址:D:\tb\apache-maven-3.6.1-bin,请注意,如果直接解压,有可能会有两个apache-maven-3.6.1-bin ![image.png](https://cdn.iotschool.com/uploads/20200214/79db6b575f7b77d1cf6c4910f08511a5.png) ![image.png](https://cdn.iotschool.com/uploads/20200214/328ae2178a40e2e0accaf2dc1ecb3311.png) MAVEN_OPTS,参数是 -Xms128m -Xmx1024m ![image.png](https://cdn.iotschool.com/uploads/20200214/80624d3d8841128ca39450fc05060cae.png) 修改Path,增加Maven的地址%MAVEN_HOME%\bin; ![image.png](https://cdn.iotschool.com/uploads/20200214/0e873c88f2a17d2ca462d42b4b8d659a.png) 测试Maven安装,打开命令行工具。使用命令mvn -v,如果能出现以下提示,即安装成功 ![image.png](https://cdn.iotschool.com/uploads/20200214/ff7b5ef823118892e07c919a49d24301.png) ### Nodejs安装 步骤1:下载Nodejs安装包,Nodejs官网地址:https://nodejs.org/enhttps://img.qb5200.com/download-x/download/ ![image.png](https://cdn.iotschool.com/uploads/20200214/8391ab7a04ed513d1d664ea1274ef5a3.png) 步骤2:安装完成后,使用命令查看Nodejs是否已经安装完成,能出现以下提示说明已经安装成功 ![image.png](https://cdn.iotschool.com/uploads/20200214/23705ebd490ed207ca4340e85dd6c229.png) ### 安装git 步骤1:下载git安装包,git官网地址是:https://git-scm.comhttps://img.qb5200.com/download-x/download/win ![image.png](https://cdn.iotschool.com/uploads/20200214/397d93a9c24f3a271ba9a7ac74300bea.png) 步骤2:安装完成后,使用命令行测试git ![image.png](https://cdn.iotschool.com/uploads/20200214/5a2dec9ee5b57cfc9e5ab670cd6e908d.png) ### 安装npm全局依赖 步骤1:使用管理员CMD命令行,执行下面命令 ``` #npm 环境读取环境变量包 npm install -g cross-env #webpack打包工具 npm install -g webpack ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/1ea2ab7f906b216c671fa9cf97047adc.png) ### 安装redis Redis安装参考:https://www.iotschool.com/wiki/redis 环境安装到此结束,接下来是通过Git拉取代码。 ## 克隆thingsboard代码 ### 确定代码存放位置 在本地创建代码存放位置的文件目录,然后进入当前目录点击鼠标右键,选择Git Bash Here ![image.png](https://cdn.iotschool.com/uploads/20200214/845fb4b9b0e697b782afccd858cc0353.png) ### 输入git命令克隆源代码 ``` git clone https://github.com/thingsboard/thingsboard.git ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/35618acda32bc56ba576aafedd3f1e7b.png) 耐心等待一段时间后,看到以下界面就算下载成功 ![image.png](https://cdn.iotschool.com/uploads/20200214/82299a86136bdeb100cb873d2a76a922.png) ### 切换git分支 默认下载的代码是master主分支的,我们开发需要切换到最新版本的分支。 查看项目源码的所有分支,下载源码后,需要进入到thingsboard文件夹 ![image.png](https://cdn.iotschool.com/uploads/20200214/601e4079dc38b7c92da1d95a3353322d.png) 发现最新发布的版本是2.4,所以我这里选择2.4,当然你可以根据自己的情况进行分支选择 输入命令以下,即可切换至2.4的分支 ``` git checkout release-2.4 ``` 看到下图这样,即切换成成功 ![image.png](https://cdn.iotschool.com/uploads/20200214/a542d98517e4b8caf44d3c8958163c82.png) ## 准备工作 ### 外网连接 因为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设置
大概位置截图:
![](https://cdn.iotschool.com/photo/2020/7068c171-6754-4b76-b210-291fe04a989c.png?x-oss-process=image/resize,w_1920) 把settings.xml里面内容设置成以下: ``` ``` 不会设置的,可以参考这个文件: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图标右键,选择属性。 ![image.png](https://cdn.iotschool.com/uploads/20200214/c0d57e4a3199bda2f3ce998057ba9011.png) 步骤2:点击兼容性-更改所有用户设置-以管理员身份运行此程序 ![image.png](https://cdn.iotschool.com/uploads/20200214https://img.qb5200.com/download-x/d244418e144afb2d0054af248883af58.png) ![image.png](https://cdn.iotschool.com/uploads/20200214/a9a3c63e12910938eccedf3db035283b.png) ## 开始编译 编译项目跟网速有关,最好连接上外网进行编译,一般5~30分钟都有可能,超过30分钟要检查你的网络。 ### 清理项目编译文件 使用IDEA Maven工具进行清理 ![image.png](https://cdn.iotschool.com/uploads/20200214/9e39ac368db5ad91d4b6ec720dfe268a.png) ### 输入编译命令开始编译 在IDEA控制台(左下方)Terminal输入以下命令进行编译: ``` mvn clean install -DskipTests ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/ba86d4e1bfcb23cdc037b3ce980944e0.png) 等一段时间后,看到下面这张图就算编译成功,如果没有编译成功请按照本教程最后的常见问题进行排查,一般都是网络问题。如果还有问题,请到社区[thingsboard专题](https://www.iotschool.com/topics/node8)中提问。 ![image.png](https://cdn.iotschool.com/uploads/20200214/9cd7f295f9dea7dcc98d21f0caae0975.png) ## 常见问题 本教程只会罗列[IoTSchool](https://www.iotschool.com/)小编在thingsboard编译过程中遇到的问题,如果有其他问题,请到社区[thingsboard专题](https://www.iotschool.com/topics/node8)中提问,会有专家为你解答。 ### 缓存导致编译失败 每次编译失败进行二次编译时,要清理缓存,并杀死遗留进程 步骤1:执行下面命令,杀死遗留进程 ``` taskkill /f /im java.exe ``` 步骤2:使用IDEA Maven工具进行清理 ![image.png](https://cdn.iotschool.com/uploads/20200214/9e39ac368db5ad91d4b6ec720dfe268a.png) **温馨提示:要进行二次编译前,最好重启一次电脑!** ### 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] ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/647c2f772a39fe9fea08f027cc4376c3.png) 如果遇到这个问题,可从以下几个原因进行分析: #### 原因1:node、npm版本号问题 本地环境安装的node、npm版本号与源码中pom.xml文件配置的版本号不一致。 解决方案: 步骤1:使用node -v、npm -v查看安装的node和npm版本号 ![image.png](https://cdn.iotschool.com/uploads/20200214/288a6e32f55fd43cb039dab9eb616bfb.png) 步骤2:修改源码中pom.xml文件中的版本号 ``` ``` 需要修改的文件有三处,位置如下: ![image.png](https://cdn.iotschool.com/uploads/20200214/44a26e80347ed3a7514a53ba09795d1b.png) #### 原因2:node-sass下载失败 编译Server UI时,会下载node-sass依赖,如果因为网络原因没有下载成功,也会编译失败。如果你是按照本本教材一步一步来的,应该不会有问题,上面准备工作中,将npm镜像源切换为淘宝,那么下载会很快的。 ``` [INFO] Downloading binary from https://github.com/sass/node-sass/releaseshttps://img.qb5200.com/download-x/download/v4.12.0/win32-x64-72_binding.node [ERROR] Cannot download "https://github.com/sass/node-sass/releaseshttps://img.qb5200.com/download-x/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] ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/59af5167c19e6edf5827c3b84a81a255.png) 解决方案:[切换镜像源为淘宝](https://www.iotschool.com/wiki/tbinstall#%E8%AE%BE%E7%BD%AEnpm%E4%B8%BA%E6%B7%98%E5%AE%9D%E9%95%9C%E5%83%8F) 解决方案:重启电脑,清理缓存 #### 原因3:Thingsboard 3.0版本编译遇到的问题 亲测:2.4版本也可以通过这种方式来解决 ``` Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.7.5:npm (npm install) on project ui-ngx: Failed to run task: 'npm install' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: -4048 (Exit value: -4048) -> [Help 1] ``` 解决方案:https://www.iotschool.com/topics/84 #### 原因4:二次编译导致残留进程 报错: ``` [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] ``` ![image.png](https://cdn.iotschool.com/uploads/20200214/b410b7bc0801e21d3b905ee14faca09a.png) ### Server Tool编译失败 ![image.png](https://cdn.iotschool.com/uploads/20200214/15cda35fd8896113c68172f507b9e7b7.png) ``` [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编译失败 ![image.png](https://cdn.iotschool.com/uploads/20200214/7236abab0ccf50b614f5bef014f3b330.png) ``` [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/confluencehttps://img.qb5200.com/download-x/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们