前言

建议先把文章看完再操作,不要直接看一步操作一步!
编译过程要有耐心!不要看到执行到哪一步很久不动了,就直接Ctrl + C给关掉了。
傻瓜版?因为很多依赖需要请求外网下载,所以需要的各种maven gradle pkg依赖都在文章提供(不包含node依赖)可减少很多因网络问题导致的编译错误(参考文章末尾列出的可能出现的问题,不包含yarn install可能出现的问题)。
提供的依赖都是在新机器编译成功的情况下打包的,不包含除tb依赖以外的任何其他依赖。


电脑配置会影响编译速度,所以一定要等(除非出现错误提示了)。
以下结果是本人电脑测试结果,不同电脑结果不同。只为了告诉大家耐心等待。。
MacBook Pro2019 第一次整体编译1个小时左右,需要下载各种依赖。后续整体编译一次在04:47 min左右
高配Windows台式机 i7-8700k GTX-1080TI 11G显存 64G内存等 第一次整体编译1个小时左右,需要下载各种依赖。后续整体编译一次在04:02 min左右
中等配置Windows联想拯救者ISK游戏本 i7-6700HQ GTX-960M 8G内存等 第一次整体编译2.5个小时左右,需要下载各种依赖。后续整体编译一次在18:35 min左右


文中提供的安装文件是windows的,mac的到网址下载。环境版本尽量保持一致。

下载文件

Compressed.zip包含本文使用的maven/openjdk11/node/git/vscode。也可以按照文章给出的地址自己下载。

  1. Compressed.zip
  2. apache-maven-3.8.1-bin.zip
  3. openjdk-11_windows-x64_bin.zip
  4. node-v12.16.1-x64.msi
  5. Git-2.31.1-64-bit.exe
  6. github加速tb.txt
  7. VSCodeUserSetup-x64-1.56.0.exe

.m2 .gradle .pkg-cache zip包下载链接:https://pan.baidu.com/s/1wbJ_pxdPZhmcesjDyOZTrg 提取码:rfse


将 .m2 .gradle .pkg-cache zip包下载后解压到用户目录下 C:\Users\你的用户名\
image.png
顺便检查一下是否解压过程中导致目录层级有问题
image.pngimage.pngimage.png


注意:maven仓库地址配置指向C:\Users\你的用户名.m2,或者将.m2/repository中文件复制到你自己的本地仓库内。
第一次编译不建议使用idea进行操作,它会自动下载,不好控制。
本文编译过程中只使用了vscode(也可以使用sublime等轻量工具)进行一些全局替换操作,其他时候都是cmd执行命令。
编译好再导入idea进行二次开发等。


本来打算把yarn缓存打包发上来的,这样yarn install命令没有梯子,不切源也能一步成功(断网测试过)。但是压缩包近1G,且文件太散碎,解压得将近一个小时,还是算了吧。

清理maven本地仓库

mac/windows删除本地仓库中所有的.lastUpdated文件
mac

  1. find ~/.m2/repository -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

windows (分开执行)

  1. cd %userprofile%\.m2\repository
  2. for /r %i in (*.lastUpdated) do del %i

安装git

文章开头提供的zip包内包含此安装文件,或到https://www.git-scm.com/downloads下载,安装后重启cmd验证命令是否生效。

  1. C:\Users\dawei>git --version
  2. git version 2.31.1.windows.1

快速下载ThingsBoard源码

  1. git clone https://hub.fastgit.org/thingsboard/thingsboard.git

切换到tag v3.2.2

  1. cd thingsboard
  2. git checkout v3.2.2

结果显示

  1. Updating files: 100% (1081/1081), done.
  2. Note: switching to 'v3.2.2'.

安装openjdk11

文章开头提供的zip包内包含此安装文件,或到http://jdk.java.net/archive/下载,安装后配置环境变量并重启cmd验证命令是否生效。
image.png

  1. C:\Users\dawei>java --version
  2. openjdk 11 2018-09-25
  3. OpenJDK Runtime Environment 18.9 (build 11+28)
  4. OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

安装maven

文章开头提供的zip包内包含此安装文件,或到https://maven.apache.org/download.cgi下载,安装后配置环境变量并重启cmd验证命令是否生效。

  1. C:\Users\dawei>mvn -v
  2. Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
  3. Maven home: C:\Users\dawei\Downloads\apache-maven-3.8.1\bin\..
  4. Java version: 11, vendor: Oracle Corporation, runtime: C:\Users\dawei\Downloads\jdk-11
  5. Default locale: zh_CN, platform encoding: GBK
  6. OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

配置 maven > conf > setting.xml

  1. <mirror>
  2. <id>repo1</id>
  3. <name>repo1 maven</name>
  4. <url>https://repo1.maven.org/maven2/</url>
  5. <mirrorOf>central</mirrorOf>
  6. </mirror>

安装node 12.16.1

文章开头提供的zip包内包含此安装文件,或到https://nodejs.org/en/blog/release/v12.16.1/下载,安装后重启cmd验证命令是否生效。

  1. C:\Users\dawei>node -v
  2. v12.16.1
  3. C:\Users\dawei>npm -v
  4. 6.13.4

安装yarn

使用npm命令安装yarn,并验证命令是否生效。

  1. npm install -g yarn
  2. C:\Users\dawei>yarn -v
  3. 1.22.10

注释license-maven-plugin

打开根目录pom.xml,搜索注释掉 license-maven-plugin 整个
image.png

替换yarn版本

vscode快捷键 ctrl + shift + h 全局替换v1.22.4 为 v1.22.10,node版本此文章安装的和tb一致,不需要修改,不一致则全局替换一下,保持一致。
image.png

开始编译

安装前端依赖

这一步最好挂着梯子,要下载很多前端依赖。
而且确保已经将.pkg-cache文件夹及里面的文件拷贝到了用户目录下

  1. cd xxx/thingsboard/ui-ngx
  2. yarn install

说明

这里要下载1377个package,挂着梯子且网速好的情况下(我是联通300M+梯子),耗时444.10s完成这一步。
yarn install.png


如果卡在某个进度非常久了。
比如卡在下面的1375/1377过不去,杀掉重新yarn install 前面非常快就过去了,到了1375还是过不去。

  1. [1/4] Resolving packages...
  2. [2/4] Fetching packages...
  3. [#####################################################--] 1375/1377

可以执行

  1. yarn cache clean

然后删除thingsboard/ui-ngx下的node_modules目录。
删除nodemodules.png
再重新执行yarn install(还是看网速和梯子,也可以尝试更换淘宝源,我没换不知道效果)


关于上一步的说明:
Fetching packages…这里就是yarn在下载依赖缓存和项目依赖。
可以查看yarn依赖缓存,在用户目录 /AppData/Local/Yarn/Cache/v6 文件夹内。(用户目录下看不到AppData文件夹的话,右上角>查看>勾选 显示隐藏文件)
执行yarn cache clean命令就会清空这里的缓存文件。
yarn cache clean.png


成功界面

yarn install success.png

编译ui-ngx(可选)

第一次编译的话,习惯先编译一下这个模块,因为它第一次编译太慢了。

  1. cd xxx/thingsboard/ui-ngx
  2. mvn clean package -DskipTests

说明

到这一步,第一次编译会出现很多
[ERROR] Compiling @xxx/xxx :es2015 as esm2015
不需要管,之后编译就不会出现了。
Snipaste_2021-05-12_07-36-01.png
到了 [ERROR] Compiling ngx-flowchart :es2015 as esm2015 会停很久,一定耐心等待!
(家里的的台式机i7-8700k第一次2分钟,macbook pro2分钟,windows笔记本 i5cpu 8分钟左右)
Snipaste_2021-05-12_07-36-23.png
控制台终于又开始动了。
Snipaste_2021-05-12_07-38-27.png

整体编译

  1. cd xxx/thingsboard
  2. mvn clean package -DskipTests

看到这个界面就是成功了,后面按照ThingsBoard源码编译文章后面的步骤进行安装数据表等操作
package success.png

可能出现的问题

多次编译项目

编译到js-executor或者ui-ngx模块的时候报错如下:Failed to delete xxxx\node.exe
nodebaocuo.png
解决:删除提示目录位置的node.exe。如果删除时候,提示正在使用无法删除,则打开任务管理器杀掉提示的那个node进程,然后再删除。或者使用电脑管家等强制删除。
node位置.png

提前下载pkg-fetch(否则js-executor编译失败)

如果是3.2.2版本的话,直接将文章开头提供的.pkg-cache解压到用户目录即可。
也可以到github下载,然后拷贝到:C:\Users\你的用户名\ .pkg-cache\v2.6
并将文件名字前面的uploaded-v2.6-node改为fetched。
例如
uploaded-v2.6-node-v12.18.1-win-x64改为fetched-v12.18.1-win-x64
uploaded-v2.6-node-v12.18.1-linux-x64改为fetched-v12.18.1-linux-x64
image.png
如果是其他TB版本,编译到js-executor时需要注意提示或报错信息,根据这个信息去github下载对应的文件。
fetched.png
或者观察目录C:\Users\你的用户名\ .pkg-cache\v2.6是否有未下载完成的文件,根据版本手动去github下载
fetcheding.png
如果这个提示都出不来就直接报错如下,建议挂梯子或者找QQ群要你的tb版本对应的pkg-cache文件。

  1. [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)
  2. [ERROR]
  3. [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
  4. [ERROR] Re-run Maven using the -X switch to enable full debug logging.
  5. [ERROR]
  6. [ERROR] For more information about the errors and possible solutions, please read the following articles:
  7. [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
  8. [ERROR]
  9. [ERROR] After correcting the problems, you can resume the build with the command
  10. [ERROR] mvn -rf :js-executor

gradle相关(HTTP Transport Service编译失败)

gradle error.png
将文章开头提供的.gradle解压到用户目录下即可。
或者删除C:\Users\你的用户名.gradle,再挂梯子下载。无法删除则重启电脑。

其他

windows,TB 3.2.2版本,且node,yarn版本和本文一致。如果不想使用开头提供的.m2 maven本地仓库。
可以将下面俩个包可能无法下载的包提前放到你自己的仓库中
gradle-tooling-api.zip 放到.m2/repository/org/gradle/中
eirslett.zip 放到.m2/repository/com/github/中,包含依赖如下:

  1. frontend-maven-plugin
  2. 1.7.5
  3. frontend-maven-plugin-1.7.5.jar
  4. frontend-maven-plugin-1.7.5.jar.sha1
  5. frontend-maven-plugin-1.7.5.pom
  6. frontend-maven-plugin-1.7.5.pom.sha1
  7. frontend-plugin-core
  8. 1.7.5
  9. ...
  10. frontend-plugins
  11. 1.7.5
  12. ...
  13. node
  14. 12.16.1
  15. node-12.16.1-win-x64.exe
  16. yarn
  17. 1.22.10
  18. yarn-1.22.10.tar.gz

卡在下载node和yarn的话
尝试全局搜索install-node-and-yarn然后根据简书文章分别在三个pom.xml中配置国内下载地址(我没遇到这个问题,没试过这个方法)

  1. <downloadRoot>http://npm.taobao.org/mirrors/node/</downloadRoot>

image.png