【ThingsBoard初体验】本地编译踩坑记录

news2024/9/23 15:32:00

前言

这只是我自己的踩坑记录,以尽快启动项目为主,暂时不对编译出现的问题做深入分析。
第一次接触物联网项目,对于文章出现的问题,如果能帮到其他小伙伴,那是我的荣幸。
大佬们有更好的解决办法,也希望能够指点指点~

本机环境

JDK:17
Node:12.22.11
Maven:3.6.3
idea:最新社区版
ThingsBoard源码:3.7.1-SNAPSHOT
本机系统:Windows 10 专业版

官网编译教程:http://www.ithingsboard.com/docs/user-guide/contribution/yuanmabianyi/

报错1:执行编译命令报错

编译命令:

mvn clean install -Dmaven.test.skip=true

报错如下:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugi
n-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resourc
es, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, 
prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[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/LifecyclePhaseNotFoundException

在这里插入图片描述

解决办法

方案1:替换编译命令

mvn clean install -DskipTests

方案2:idea的默认终端切换为Command Prompt

在这里插入图片描述
再执行编译命令

mvn clean install -Dmaven.test.skip=true
### 或
mvn clean install -DskipTests

报错2:gradle下载不了

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  43.022 s
[INFO] Finished at: 2024-07-29T00:07:59+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke (default) on project http: Execution default of goal org.thingsboard:gradle-maven-plu
gin:1.0.12:invoke failed: Plugin org.thingsboard:gradle-maven-plugin:1.0.12 or one of its dependencies could not be resolved: Failure to find org.gradle:gradle-tooling-api:jar:7.3.3 in http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced -> [Help 1]
[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/PluginResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf org.thingsboard.transport:http

在这里插入图片描述
从报错信息可以看出是gradle弄不下来,根据网上搜索到的解决方案:
1、修改maven镜像为淘宝镜像
2、挂梯子
以上方案均不成功

最终解决办法:手动安装依赖包

https://mvnrepository.com/ 搜索 gradle-tooling-api 直接下载对应版本的 jar 包,通过 maven 命令手动安装到本地仓库的方式解决。
7.3.3版本地址:https://mvnrepository.com/artifact/org.gradle/gradle-tooling-api/7.3.3
直接下载:https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/7.3.3/gradle-tooling-api-7.3.3.jar

提醒一下,需要根据源码版本下载对应的gradle版本:
在这里插入图片描述
下载 jar 之后,执行 maven 命令:

mvn install:install-file "-Dmaven.repo.local=D:\maven\repository(本地maven仓库路径)" "-DgroupId=org.gradle" "-DartifactId=gradle-tooling-api" "-Dversion=7.3.3" "-Dpackaging=jar" "-Dfile=C:\Users\Downloads\gradle-tooling-api-7.3.3.jar(下载的jar包所在的路径)"

解决了下载不了 gradle-tooling-api:jar:7.3.3 的问题之后,再次执行编译命令:

mvn clean install -Dmaven.test.skip=true
### 或
mvn clean install -DskipTests

报错3:编译时无法识别gradle

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:17 min
[INFO] Finished at: 2024-07-29T00:18:37+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.12:invoke (default) on project http: org.gradle.tooling.BuildException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-7.3.3-bin.zip'. -> [Help 1]
[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 <args> -rf org.thingsboard.transport:http

在这里插入图片描述
这个问题,我最开始解决办法是修改idea默认的gradle路径为指定版本路径:
❌❌❌虽然能解决,但是指定了gradle版本路径,可能会导致其他项目使用其他gradle版本的话,就会识别不到,所以不建议尝试这个办法!

在这里插入图片描述

最终解决办法:重启大法

重启电脑,发现使用默认路径也能成功!
可能是因为当时手动安装了gradle,导致idea没有立即识别到的原因。
所以遇到这个问题的小伙伴,可以尝试先重启一下电脑看看能不能解决这个问题。

报错4:ui-ngx模块的依赖问题

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:05 min
[INFO] Finished at: 2024-07-29T18:51:37+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project application: Could not resolve dependencies for project org.thingsboard:application:jar:3.7.1-SNAPSHOT: Failed to collect de
pendencies at org.thingsboard:ui-ngx:jar:3.7.1-SNAPSHOT: Failed to read artifact descriptor for org.thingsboard:ui-ngx:jar:3.7.1-SNAPSHOT: Could not transfer artifact org.thingsboard:ui-ngx:pom:3.7.1-SNAPSHOT from/to spring-snapshots (https://repo.spring.io/snapshot): Transfer failed for https://repo.spring.io/snapshot/org/thingsboard/ui-ngx/3.7.1-SNAPSHOT/ui-ngx-3.7.1-SNAPSHOT.pom: Connection reset -> [Help 1]
[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/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :application

在这里插入图片描述

解决办法:由于我不使用这个项目原本的前端模块,所以我解决这个问题的办法就是把ui-ngx这个模块在项目的依赖关系中直接踢除掉

需要使用项目原本的前端的小伙伴,看到这里就可以跳过这个问题了,因为解决方案对你已经无用了。
请自行百度解决方案哈!

可以看到这里报错是无法解析 ui-ngx 这个模块依赖的问题,但一开始我们就已经把 ui-ngx 在 父pom 中已经注释掉了,可还是出现了这个问题,那就说明在别的模块中也引入了 ui-ngx 。

在idea全局搜索发现,确实在别的模块中引用了 ui-ngx

在这里插入图片描述
注释掉这些引用,再次执行编译命令:

mvn clean install -Dmaven.test.skip=true
### 或
mvn clean install -DskipTests

好家伙,还是编译失败!!!也就是【报错5】↓↓↓

报错5:爆出个yarn下载失败???

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:install-node-and-yarn (install node and yarn) on project js-executor: Could not download Yarn: Could not download https://github.com/yarnpkg/yarn/releases/download/v1.22.17/yarn-v1.22.17.tar.gz: Connection reset -> [Help 1]
[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 <args> -rf :js-executor

在这里插入图片描述
搞到这里,解决方案就不用再费心思百度了,按照官网来,但还是要先确认一下需要的文件版本

解决方案:参考官网的来

官网地址:http://www.ithingsboard.com/docs/user-guide/contribution/yuanmabianyi/#%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93
在这里插入图片描述
提醒一下,官网这个解决方案的源码版本是2.6,如果拉取的是最新源码,需要在报错信息中搜索"yarn",找到当前版本源码需要的文件版本

在这里插入图片描述
在 https://github.com/vercel/pkg-fetch/releases 找到 v3.4,下载需要的文件放到对应的 .pkg-cache 目录中(没有.pkg-cache目录,就自己创建一下)

文件下载下来之后,就参考官网的方案操作吧!
在这里插入图片描述
不想去github翻找这个文件的话,也可以点击下面链接直接下载

node-v16.15.0-win-x64:https://github.com/vercel/pkg-fetch/releases/download/v3.4/node-v16.15.0-win-x64
node-v16.15.0-linux-x64:https://github.com/vercel/pkg-fetch/releases/download/v3.4/node-v16.15.0-linux-x64

到此!ThingsBoard源码本地编译踩坑之旅就结束了,终于结束了!φ(゜▽゜*)♪

在这里插入图片描述
附上编译成功截图表示庆祝!!!O(∩_∩)O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1964253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeError: Components is not a function

Vue中按需引入Element-plus时&#xff0c;报错TypeError: Components is not a function。 1、参考Element-plus官方文档 安装unplugin-vue-components 和 unplugin-auto-import这两款插件 2、然后需要在vue.config.js中配置webPack打包plugin配置 3、重新启动项目会报错 T…

消息中间件分享

消息中间件分享 1 为什么使用消息队列2 消息队列有什么缺点3 如何保证消息队列的高可用4 如何处理消息丢失的问题?5 如何保证消息的顺序性1 为什么使用消息队列 解耦、异步、削峰 解耦 不使用中间件的场景 使用中间件的场景 异步 不使用中间件 使用中间件 削峰 不使…

【redis】redis高可用 哨兵模式 一主二从三哨兵部署教程

哨兵模式&#xff1a;自动主从同步、自动选举主节点&#xff1b;基本可以满足大部分业务场景&#xff1b; 在针对大规模数据和高并发请求的场景、数据不能丢失&#xff0c;才需要用到集群模式。 本文教程基于redis3 , centos 8 stream操作系统&#xff0c;理论上来说 redis3也好…

利用 Python 制作图片轮播应用

在这篇博客中&#xff0c;我将向大家展示如何使用 xPython 创建一个图片轮播应用。这个应用能够从指定文件夹中加载图片&#xff0c;定时轮播&#xff0c;并提供按钮来保存当前图片到收藏夹或仅轮播收藏夹中的图片。我们还将实现退出按钮和全屏显示的功能。 C:\pythoncode\new\…

http协议深度解析——网络时代的安全与效率(1)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面&#xff1a; 本章目的&#xff1a; …

【Python学习手册(第四版)】学习笔记11.1-赋值语句(分解赋值、序列赋值、解包等)及变量命名规则详解

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文主要对赋值语句的各种形式做详解&#xff0c;以非常通俗易懂的语言、循序渐进的方式&#xff0c;分别对单个、元组及列表分解、序列赋值、序列解包、多重目标…

LinuxCentos中ELK日志分析系统的部署(详细教程8K字)附图片

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

Android发布Library至mavenCentral遇到 Received status code 401

一、由于我的AppUpdate 库最新的版本还是去年发布的&#xff0c;所以想着发布一个版本&#xff0c;可没想到什么都没有改动的情况下竟然返回401&#xff1b;检查了半天发现用户名和密码也没有错&#xff0c;百思不得解&#xff01; 二、最后没想到竟然是sonatype那边改了&#…

常见的Markdown编辑器推荐!

工欲善其事&#xff0c;必先利其器。一款好用的 Markdown 编辑器能极大地提高我们的写作体验&#xff0c;本篇博客就来介绍一些好用的编辑器。 ‍ ‍ Markdown 编辑器的分类 根据 Markdown 编辑器的使用环境&#xff0c;可以简单分为四类&#xff1a; 在线编辑器&#xff…

类和对象(中 )C++

默认成员函数就是用户不显示实现&#xff0c;编译器会自动实现的成员函数叫做默认成员函数。一个类&#xff0c;我们在不写的情况下&#xff0c;编译器会自动实现6个默认成员函数&#xff0c;需要注意&#xff0c;最重要的是前4个&#xff0c;其次就是C11以后还会增加两个默认成…

SpringBoot 优雅实现超大文件上传

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 文件上传是一个老生常谈的话题了&#xff0c;在文件相对比较小的情况下&#xff0c;可以直接把文件转化为字节流上传到服务器&#xff0c;但在文件比较大的情况下&#xff0c;用普通的方式进行上传&…

hadoop学习笔记2-hdfs

3.HDFS 3.1HDFS两类节点 namenode&#xff1a;名称节点datanode&#xff1a;数据节点 1.namenode 1&#xff09;namenode用来存储元数据&#xff0c;接收客户端的读写请求&#xff0c;namenode的元数据会分别保存在磁盘和内存中&#xff0c;保存到内存是为了快速查询数据信…

一文让你学会python:面向对象

面向对象编程&#xff08;OOP&#xff09; 一.类与实例 1.类&#xff1a; 是对现实世界描述的一种类型&#xff0c;是抽象的&#xff0c;是实例的模板&#xff0c;类名采用大驼峰&#xff0c;定义方式为 class 类名: pass 。 2.实例&#xff1a; 根据类创建的具体对象&…

昇思25天学习打卡营第25天 | Pix2Pix实现图像转换

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是一种基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks&#xff09;的图像转换模型&#xff0c;由Phillip Isola等人在2017年提出。它能够将语义/标签图像转换为真实图片、灰度图转换为彩色图、航空…

永劫无间:排位赛游戏攻略大全!VMOS云手机辅助攻略!

在《永劫无间》中&#xff0c;排位赛和金乌玩法是提升实力和展示技巧的绝佳途径。以下是详细的攻略建议&#xff0c;帮助玩家在游戏中取得更好的成绩。 排位赛 英雄们齐聚“聚窟洲”&#xff0c;为争夺“不朽面具”展开激烈的战斗。排位赛是玩家展示实力的重要平台&#xff0c…

六方云笔试总结

1. &#xff08;1&#xff09;题目 外部变量&#xff0c;指的是处于函数外部的全局静态变量&#xff0c;所以选c &#xff08;2&#xff09;知识点 1. static &#xff08;1&#xff09;函数外部的全局变量 当一个变量在函数外部定义并使用static关键字修饰时&#xff0c;这…

函数的学习(二)

1.函数嵌套 在C语言中&#xff0c;函数的嵌套是指在一个函数内部调用另一个函数。通过函数的嵌套&#xff0c;可以将程序的功能细化&#xff0c;提高代码的可读性和可维护性。函数的嵌套可以是直接嵌套&#xff0c;也可以是间接嵌套。 直接嵌套是指一个函数直接在另一个函数内…

华彩38载 同心筑未来—中华财险客户节盛大启幕!

活动主题&#xff1a;华彩38载 同心筑未来—中华财险客户节金融知识有奖问答 活动时间&#xff1a;2024年7月26日至9月15日 参与方式&#xff1a;① 微信搜索并关注公众号“中华财险宁波分公司”进入答题活动页面&#xff0c;点击“开始答题”即可开始答题&#xff1b;②规定…

ComfyUI-MuseTalk部署依赖mmcv

ComfyUI-MuseTalk部署依赖mmcv ComfyUI-MuseTalk是MuseTalk基于ComfyUI的自定义节点插件。MMPose 是一款基于 PyTorch 的“人体姿态”分析的开源工具箱&#xff0c;是 OpenMMLab 项目的成员之一。OpenMMLab 团队致力于构建了深度学习时代最具影响力的开源计算机视觉算法系统&am…

【C++标准库】介绍及使用string类

string 一.string类介绍二.string类的静态成员变量三.string类的常用接口1.构造函数&#xff08;constructor&#xff09;2.析构函数&#xff08;destructor&#xff09;3.运算符重载&#xff08;operator&#xff09;1.operator2.operator[]3.operator4.operator 4.string的四…