thingsboard真实项目实战四、Windows下构建补充

第五章、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 – Download Apache Maven

修改环境变量和更改Maven仓库,参考之前第四章5.2节

2.3、安装git

去官网下载安装

https://git-scm.com/downloads

3、下载依赖

3.1、操作

由于连接不稳定,建议先将项目依赖下载到本地,然后在进行构建。命令执行需在thingsboard源码的根目录中进行。

1、首先使用 dependency:go-offline 下载所有依赖

mvn dependency:go-offline

2、接着使用 validate 目标来校验项目配置

mvn validate

3、检查并下载缺失的依赖

如果在校验过程中发现依赖缺失,可以再次使用 dependency:resolve 目标来解析并下载缺失的依赖

mvn dependency:resolve

4、分析依赖

最后可以使用 dependency:analyzedependency: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 
 

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值