前言
建议先把文章看完再操作,不要直接看一步操作一步!
编译过程要有耐心!不要看到执行到哪一步很久不动了,就直接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。也可以按照文章给出的地址自己下载。
Compressed.zip
apache-maven-3.8.1-bin.zip
openjdk-11_windows-x64_bin.zip
node-v12.16.1-x64.msi
Git-2.31.1-64-bit.exe
github加速tb.txt
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\你的用户名\
顺便检查一下是否解压过程中导致目录层级有问题
注意:maven仓库地址配置指向C:\Users\你的用户名.m2,或者将.m2/repository中文件复制到你自己的本地仓库内。
第一次编译不建议使用idea进行操作,它会自动下载,不好控制。
本文编译过程中只使用了vscode(也可以使用sublime等轻量工具)进行一些全局替换操作,其他时候都是cmd执行命令。
编译好再导入idea进行二次开发等。
本来打算把yarn缓存打包发上来的,这样yarn install命令没有梯子,不切源也能一步成功(断网测试过)。但是压缩包近1G,且文件太散碎,解压得将近一个小时,还是算了吧。
清理maven本地仓库
mac/windows删除本地仓库中所有的.lastUpdated文件
mac
find ~/.m2/repository -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
windows (分开执行)
cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i
安装git
文章开头提供的zip包内包含此安装文件,或到https://www.git-scm.com/downloads下载,安装后重启cmd验证命令是否生效。
C:\Users\dawei>git --version
git version 2.31.1.windows.1
快速下载ThingsBoard源码
git clone https://hub.fastgit.org/thingsboard/thingsboard.git
切换到tag v3.2.2
cd thingsboard
git checkout v3.2.2
结果显示
Updating files: 100% (1081/1081), done.
Note: switching to 'v3.2.2'.
安装openjdk11
文章开头提供的zip包内包含此安装文件,或到http://jdk.java.net/archive/下载,安装后配置环境变量并重启cmd验证命令是否生效。
C:\Users\dawei>java --version
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
安装maven
文章开头提供的zip包内包含此安装文件,或到https://maven.apache.org/download.cgi下载,安装后配置环境变量并重启cmd验证命令是否生效。
C:\Users\dawei>mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: C:\Users\dawei\Downloads\apache-maven-3.8.1\bin\..
Java version: 11, vendor: Oracle Corporation, runtime: C:\Users\dawei\Downloads\jdk-11
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
配置 maven > conf > setting.xml
<mirror>
<id>repo1</id>
<name>repo1 maven</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
安装node 12.16.1
文章开头提供的zip包内包含此安装文件,或到https://nodejs.org/en/blog/release/v12.16.1/下载,安装后重启cmd验证命令是否生效。
C:\Users\dawei>node -v
v12.16.1
C:\Users\dawei>npm -v
6.13.4
安装yarn
使用npm命令安装yarn,并验证命令是否生效。
npm install -g yarn
C:\Users\dawei>yarn -v
1.22.10
注释license-maven-plugin
打开根目录pom.xml,搜索注释掉 license-maven-plugin
整个
替换yarn版本
vscode快捷键 ctrl + shift + h 全局替换
开始编译
安装前端依赖
这一步最好挂着梯子,要下载很多前端依赖。
而且确保已经将.pkg-cache文件夹及里面的文件拷贝到了用户目录下
cd xxx/thingsboard/ui-ngx
yarn install
说明
这里要下载1377个package,挂着梯子且网速好的情况下(我是联通300M+梯子),耗时444.10s完成这一步。
如果卡在某个进度非常久了。
比如卡在下面的1375/1377过不去,杀掉重新yarn install 前面非常快就过去了,到了1375还是过不去。
[1/4] Resolving packages...
[2/4] Fetching packages...
[#####################################################--] 1375/1377
可以执行
yarn cache clean
然后删除thingsboard/ui-ngx下的node_modules目录。
再重新执行yarn install(还是看网速和梯子,也可以尝试更换淘宝源,我没换不知道效果)
关于上一步的说明:
Fetching packages…这里就是yarn在下载依赖缓存和项目依赖。
可以查看yarn依赖缓存,在用户目录 /AppData/Local/Yarn/Cache/v6 文件夹内。(用户目录下看不到AppData文件夹的话,右上角>查看>勾选 显示隐藏文件)
执行yarn cache clean命令就会清空这里的缓存文件。
成功界面
编译ui-ngx(可选)
第一次编译的话,习惯先编译一下这个模块,因为它第一次编译太慢了。
cd xxx/thingsboard/ui-ngx
mvn clean package -DskipTests
说明
到这一步,第一次编译会出现很多
[ERROR] Compiling @xxx/xxx :es2015 as esm2015
不需要管,之后编译就不会出现了。
到了 [ERROR] Compiling ngx-flowchart :es2015 as esm2015 会停很久,一定耐心等待!
(家里的的台式机i7-8700k第一次2分钟,macbook pro2分钟,windows笔记本 i5cpu 8分钟左右)
控制台终于又开始动了。
整体编译
cd xxx/thingsboard
mvn clean package -DskipTests
看到这个界面就是成功了,后面按照ThingsBoard源码编译文章后面的步骤进行安装数据表等操作
可能出现的问题
多次编译项目
编译到js-executor
或者ui-ngx
模块的时候报错如下:Failed to delete xxxx\node.exe
解决:删除提示目录位置的node.exe。如果删除时候,提示正在使用无法删除,则打开任务管理器杀掉提示的那个node进程,然后再删除。或者使用电脑管家等强制删除。
提前下载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
如果是其他TB版本,编译到js-executor时需要注意提示或报错信息,根据这个信息去github下载对应的文件。
或者观察目录C:\Users\你的用户名\ .pkg-cache\v2.6是否有未下载完成的文件,根据版本手动去github下载
如果这个提示都出不来就直接报错如下,建议挂梯子或者找QQ群要你的tb版本对应的pkg-cache文件。
[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)
[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 -rf :js-executor
gradle相关(HTTP Transport Service编译失败)
将文章开头提供的.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/中,包含依赖如下:
frontend-maven-plugin
1.7.5
frontend-maven-plugin-1.7.5.jar
frontend-maven-plugin-1.7.5.jar.sha1
frontend-maven-plugin-1.7.5.pom
frontend-maven-plugin-1.7.5.pom.sha1
frontend-plugin-core
1.7.5
...
frontend-plugins
1.7.5
...
node
12.16.1
node-12.16.1-win-x64.exe
yarn
1.22.10
yarn-1.22.10.tar.gz
卡在下载node和yarn的话
尝试全局搜索install-node-and-yarn然后根据简书文章分别在三个pom.xml中配置国内下载地址(我没遇到这个问题,没试过这个方法)
<downloadRoot>http://npm.taobao.org/mirrors/node/</downloadRoot>