ThingsBoard从零开始之编译
一、安装准备
Win10电脑一台【thingsboard2.4.3】
二、所需软件
IDEA、Navicat Premium、Git、Maven、Node、Fq软件
三、环境配置
1. Git
https://git-scm.com/download/win
下载64-bit Git for Windows Setup.64位软件并安装,并配置Git全局环境变量。
cmd输入git version,如果出现git version xxx.xxx.xx 表示成功。
2.JDK
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html下载jdk-8u251-windows-x64.exe并且安装。打开cmd输入java如果没有反应,就配置java的环境变量。
JAVA_HOME和Path。然后再打开CMD输入java和javac
3.MAVEN
http://maven.apache.org/download.cgi下载apache-maven-3.6.3-bin.zip
解压到文件夹中。文件目录尽量不要包含中文。
然后配置Maven的环境变量。MAVEN_HOME和Path,参考java的环境变量配置。
然后打开CMD输入mvn -v查看mvn版本,如果有maven信息表示maven安装完毕。
接下来配置maven的镜像。
打开\Program Files\apache-maven-3.6.3\conf\setting.xml
找到mirrors标签的位置,把下边的mirror复制进去。
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <!--This is used to direct the public snapshots repo in the profile below over to a different nexus group --> <id>nexus-public-snapshots</id> <mirrorOf>public-snapshots</mirrorOf> <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url> </mirror> |
4.Node
https://nodejs.org/zh-cn/download/ 下载windows64位安装包,然后安装,它会自动把node添加到环境变量中。安装完成后打开CMD,输入node -v、npm -v
然后给node配置淘宝镜像
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org
四、编译步骤
1)工作空间
新建工作空间workspace-thingsboard
2)克隆代码
在工作空间中鼠标右键Git Bash Herer
输入
git clone https://github.com/thingsboard/thingsboard.git
克隆代码到工作空间,然后查看所有分支,并切换到2.4的分支。
git branch -a git checkout origin/release-2.4
3)修改源码
用IDEA(以管理员启动)打开源码。
4.3.1 修改node和npm版本
Ctrl Shift F全局搜索代码nodeVersion共有三处地方的pom文件需要修改
这里的nodeVersion和npmVersion要改成cmd中node -v 和npm -v出来的版本。
4.3.2 注释License
找到thingsboard根目录的pom注释com.mycila这个插件
4.3.3 注释assembly
找到msa/js-executor底下的pom文件,注释maven-assembly-plugin这个插件
4)编译源码
以管理员身份启动CMD,进入thingsboard目录,输入
mvn clean install -DskipTests
五、常见问题
1)进程未杀死导致资源被占用
[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]
二次编译时要先打开任务管理器,进入详细任务,搜索node和java,并且杀死这两个进程
或者在cmd中输入
taskkill /f /im java taskkill /f /im node
2)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-
3)License 检查不通过
注释thingsboard根目录pom中的license插件
4)非Server UI模块报错
一般情况下都是网络问题
这些模块报错可能需要fq软件,tb依赖了一些国外的jar包。
看报错信息提示,适当的加入 -X -rf命令进行调试
-X是以debug模式查看mvn构建 -rf是从指定报错的模块开始编译,可以省去很多时间,专注于处理报错的模块。
如:
mvn clean install -DskipTests -X -rf :tb mvn clean install -DskipTests -X -rf :black-box-tests
切记,每次编译都要清理内存中的进程。
5)Server UI模块报错
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org #使用淘宝镜像 npm config get registry #查询当前镜像 npm config rm registry #删除自定义镜像,使用官方镜像 npm info express
- 首先要检查pom中的nodeVersion是否替换,其次检查当前node使用的镜像源是否为淘宝。
- 检查ui文件夹中的target/node中的node.exe是否正常。并删除 ui 目录下面的 node_modules 文件夹
- 清理node缓存,在cmd中执行
npm cache clean -f
如果报错了,切记重启电脑之后,再次进入,因为杀死node进程之后,缓存可能还存在被占用的情况。
- 执行
npm update
- 执行
mvn clean install -DskipTests -X -rf :ui
- 也可以单独进入ui目录,执行npm install进行单独调试,如果那个模块报错了,如node-sass报错了,就单独执行npm install node-sass查看具体错误信息,一个一个模块进行解决排查
Tip可能存在的问题:
- 确保ui目录的权限,是用户完全控制状态,有可能会因为权限问题,无法删除某些文件,而导致报错。
- 缺少windows构建插件
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。
npm install --global --production windows-build-tools
这个问题会导致node-sass编译失败。
- Target中的node不可用,可以连上外网进行下载编译
设置node代理,打开fq软件,搜索电脑的proxy,查看代理服务器ip和端口
npm config set http-proxy 127.0.0.1:31233 npm config set prox=http://127.0.0.1:31233
注意要及时删除代理
npm config list npm config delete proxy npm config delete proxy-http
6)找不到org.thingsboard.server.gen.js.xxx
在编译完成后,重新
mvn clean mvn clean install -DskipTests
六、社区热线
推荐两个thingsboard的社区,非常之无措,大家异常活跃。
最后贴图镇楼:祝大家都能编译成功早日踏上tb的大军!