第五章、Windows下构建补充
构建thingsboard过程耗时切巨烦,经常会因为各种原因报错,这里我提供一个构建的方案,能极大提高构建的成功率。
1、提高构建成功率的方法
整体安装有种先有鸡还是先有蛋的感觉,我的思路是想通过
mvn dependency:go-offline
命令将所有依赖下载下来到本地仓库,避免编译过程中再去联网,特别对于进行需要进行重新构建的要求。但经过测试,下载依赖需要用到编译完成后生成的deb文件,具体原因应该是使用mvn dependency:go-offline时需要下载全部依赖,但有些deb的依赖需要通过构建才能生成。所以产生了矛盾。
我遇到的有application-3.7.0-deb.deb
[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 18.465 s [INFO] Finished at: 2024-07-31T15:44:47+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal on project tb: Could not resolve dependencies for project org.thingsboard.msa:tb:pom:3.7.0: org.thingsboard:application:deb:deb:3.7.0 was not found in https://repo.jenkins-ci.org/releases during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of jenkins has elapsed or updates are forced -> [Help 1]
再比如:vc-executor-3.7.0-deb.deb
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.452 s
[INFO] Finished at: 2024-07-31T16:39:46+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project vc-executor-docker: Could not resolve dependencies for project org.thingsboard.msa:vc-executor-docker:pom:3.7.0: Could not find artifact org.thingsboard.msa:vc-executor:deb:deb:3.7.0 in thingsboard-release (https://repo.thingsboard.io/artifactory/libs-release-public/) -> [Help 1]
还有 thingsboard.deb、vc-executor-3.7.0-deb.deb等。
在你得到这些错误的时候,基本上大部分的依赖应该都下载好了,所以其实可以在这个时候进行构建了。
具体构建过程参考前一章。
2、准备工作
2.1、安装OpenJDK
去微软下载靠谱一些。
下载地址:下载 Microsoft Build of OpenJDK | Microsoft Learn
选择你要的windows版本下载安装。
2.2、安装Maven
去Maven – Download Apache Maven下在最新的Maven,我这里是3.8.8,把里面的文件放在自己想放的目录里。我这里是放在 C:\maven 目录。
修改环境变量和更改Maven仓库,参考之前第四章5.2节
2.3、安装git
去官网下载安装
3、下载依赖
3.1、操作
由于连接不稳定,建议先将项目依赖下载到本地,然后在进行构建。命令执行需在thingsboard源码的根目录中进行。
1、首先使用 dependency:go-offline
下载所有依赖
mvn dependency:go-offline
2、接着使用 validate
目标来校验项目配置
mvn validate
3、检查并下载缺失的依赖
如果在校验过程中发现依赖缺失,可以再次使用 dependency:resolve
目标来解析并下载缺失的依赖
mvn dependency:resolve
4、分析依赖
最后可以使用 dependency:analyze
和 dependency:tree
目标来分析和检查依赖树。
mvn dependency:analyze
mvn dependency:tree
3.2、遇到的问题
3.2.1、org.thingsboard在中央maven仓库中找不到
下载过程中会报有些依赖在maven的中央仓库中找不到,
主要集中在org.thingsboard中 都有这样一个地址 org.thingsboard.common
比如
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.156 s
[INFO] Finished at: 2024-07-31T11:35:35+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project util: Could not resolve dependencies for project org.thingsboard.common:util:jar:3.7.0: org.thingsboard.common:data:jar:3.7.0 was not found in https://repo1.maven.org/maven2/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
[ERROR]
再比如:
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.358 s
[INFO] Finished at: 2024-07-31T11:50:18+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project util: Could not resolve dependencies for project org.thingsboard.common:util:jar:3.7.0: Could not find artifact org.thingsboard.common:data:jar:3.7.0 in central (https://repo1.maven.org/maven2/) -> [Help 1]
[ERROR]
这是因为在默认的https://repo1.maven.org/maven2/org/thingsboard/里org.thingsboard.common:data:jar:3.7.0
org.thingsboard.common:util:jar:3.7.0
这二个文件找不到了
解决方案是去 https://mvnrepository.com/ 这个网站查找文件,下载后放在 .m2目录相应位置。
下面用org.thingsboard.common:data:jar:3.7.0这个文件作为例子演示如何解决
先来到 https://mvnrepository.com/ 这个网站
在搜索栏输入thingsboard
点击data
我们用的是3.7.0版本,点击它
选择View All
把看到的这几个文件下载下来,复制到
你的用户名上层目录中有个.m2目录,打开它,一层层对应下去的位置。如下图:
然后在用 mvn dependency:go-offline 命令继续下载,
缺少的Utli也是同样的操作。
重复上面的操作,直到所有的下载依赖完成。
这些目录中可能有.lastUpdated这样的文件,都可以删除的
可以利用下面这个链接一个个把这些都下齐。
Index of libs-release-public/org/thingsboard
如果在下载中遇到问题比如卡顿的,可以中断下载后,重新开始。
仔细阅读红色的错误信息,就可以知道具体是哪个文件没有下载到。然后去上面网站手动下载后补全。
还有个方法就是吧 https://repo.thingsboard.io/artifactory/libs-release-public/
这个地址加到maven设置中去。在maven的目录下conf目录里有个setting.xml文件,中添加他,下面是示例。
在setting.xml中找到<profiles>
节点,并在其中配置新的仓库。
<profiles> <profile> <id>thingsboard-repo</id> <repositories> <repository> <id>thingsboard-release</id> <url>https://repo.thingsboard.io/artifactory/libs-release-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </profile> </profiles>
和
<activeProfiles>
<activeProfile>thingsboard-repo</activeProfile>
</activeProfiles>
2.2.2、org.gradle:gradle-tooling-api:jar:7.3.3
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29.649 s
[INFO] Finished at: 2024-07-31T14:11:06+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:resolve-plugins (resolve-plugins) on project http: Nested:: Could not find artifact org.gradle:gradle-tooling-api:jar:7.3.3 in jenkins (https://repo.jenkins-ci.org/releases)
这个新的错误表明,Maven在解析插件依赖时,无法找到org.gradle:gradle-tooling-api:jar:7.3.3
这个依赖,并且尝试从https://repo.jenkins-ci.org/releases
这个仓库下载时失败了。
去这个地址找
https://mvnrepository.com/artifact/org.gradle/gradle-tooling-api/7.3.3
这个目标文件在
3.2.3、deb文件缺失
如之前提到的
[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 18.465 s [INFO] Finished at: 2024-07-31T15:44:47+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal on project tb: Could not resolve dependencies for project org.thingsboard.msa:tb:pom:3.7.0: org.thingsboard:application:deb:deb:3.7.0 was not found in https://repo.jenkins-ci.org/releases during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of jenkins has elapsed or updates are forced -> [Help 1]
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.452 s
[INFO] Finished at: 2024-07-31T16:39:46+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project vc-executor-docker: Could not resolve dependencies for project org.thingsboard.msa:vc-executor-docker:pom:3.7.0: Could not find artifact org.thingsboard.msa:vc-executor:deb:deb:3.7.0 in thingsboard-release (https://repo.thingsboard.io/artifactory/libs-release-public/) -> [Help 1]
等等类似的deb文件缺失。在你得到这个错误的时候,你可以试着对项目进行一次构建。因为这个时候大部分的依赖你应该完成下载了。
3.2.4、yarn 超时
在构建过程中会报yarn install
错误,因为yarn在安装时需要去网络下载,这个yarn install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network 代表你的网络下载过程中超时了。
[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 13:58 min [INFO] Finished at: 2024-08-01T16:20:22+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:yarn (yarn install) on project ui-ngx: Failed to run task: 'yarn install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
解决方法:
编辑thingsboard-3.7\ui-ngx目录下的pom.xml
找到
<configuration>
<arguments>install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network</arguments>
</configuration>
修改100000为300000。如果还是不行,那么就换个网络,或换个时间试试。
4、大招
这里我提供一份我自己全新机器下的资源文件,供大家下载。这个Maven本地资源库针对的版本是thingsboard 3.7.0。
下载前请安装好OpenJDK、Maven、Git,修改Maven的中央仓库地址到阿里。
包里面包括了
.m2
.gradle
.pkg-cache
这三个目录,把它放在你的用户名目录下面即可。
然后进行构建。
当中必会出现上面3.2.4的yarn超时问题,按照上面修改就能构建成功了。
下载地址:
链接: https://pan.baidu.com/s/1NbWM8fSR1bpNu8EN_MynuA?pwd=j3ne 提取码: j3ne