当前位置:   article > 正文

Windows 源码运行 ThingsBoard_failed to update mail configuration. settings not

failed to update mail configuration. settings not found!

首先理一下ThingsBoard所需的环境:

1.jdk1.8

2.maven

3.PostgreSQL

4.nodejs  && npm

5.redis

6.git

7.IDEA(源码运行)

以下运行的是2.4版本的

错误查找建议方法:浏览器   -->    ctrl+F     输入错误包:如

org.apache.maven.plugins:maven-clean-plugin:2.5:clean

参考:

https://www.iotschool.com/wiki/tbinstall

http://www.ithingsboard.com/docs/user-guide/install/windows/

http://www.ithingsboard.com/docs/user-guide/contribution/yuanmayunxing/

https://blog.csdn.net/nihaomabmt/article/details/107385241

部分问题按照解决操作完成后需要重启IDEA/shell窗口,请多试几次。文中问题笔者也没有全部遇到,更多的问题请到

https://www.iotschool.com/topics/node8

搜索解决,生命在于折腾,多折腾几次,笔者最终效果:

登录:

以下开始正文:

JDK

下载安装

JDK 官方下载地址: https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

JDK 版本选择 JDK8,我本地环境是 Windos10 64 位,所以选择 jdk-8u221-windows-x64.exe

image.png

下载好了之后直接默认安装就行 image.png

配置环境变量

步骤 1: 在 JAVA_HOME 中增加 JDK 的安装地址:C:\Program Files\Java\jdk1.8.0_221

 image.png

步骤 2: 在 CLASSPATH 中增加 JDK 的安装地址中的文件:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

 image.png

步骤 3: 在 Path 中增加 JDK 的地址:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

 image.png

步骤 4 输入以下命令

java -version

如果能出现以下的提示信息,就算安装成功了

 image.png

安装 IDEA

参考:IDEA 安装教程

安装 Maven

步骤 1:下载 maven,进入地址:http://maven.apache.org/download.cgi image.png

步骤 2:下载到本地

 image.png

步骤 3:配置环境变量 增加 MAVEN_HOME,即 maven 的地址:D:\tb\apache-maven-3.6.1-bin,请注意,如果直接解压,有可能会有两个 apache-maven-3.6.1-bin 

image.png

image.png

MAVEN_OPTS,参数是 -Xms128m -Xmx1024m

 image.png

修改 Path,增加 Maven 的地址%MAVEN_HOME%\bin;

 image.png

测试 Maven 安装,打开命令行工具。使用命令 mvn -v,如果能出现以下提示,即安装成功

 image.png

PostgreSQL

我是直接装在docker上的,比较简单粗暴。

docker pull postgres:9.4

 创建容器:

docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 54321:5432 -d postgres:9.4 

 

其他安装请移步:https://www.runoob.com/postgresql/windows-install-postgresql.html

Nodejs 安装

步骤 1:下载 Nodejs 安装包,Nodejs 官网地址:https://nodejs.org/en/download/

 image.png

步骤 2:安装完成后,使用命令查看 Nodejs 是否已经安装完成,能出现以下提示说明已经安装成功

 image.png

安装 redis

Redis 安装参考:https://www.iotschool.com/wiki/redis

安装 git

步骤 1:下载 git 安装包,git 官网地址是:https://git-scm.com/download/win

 image.png

步骤 2:安装完成后,使用命令行测试 git

 image.png

安装 npm 全局依赖

步骤 1:使用管理员 CMD 命令行,执行下面命令

  1. #npm 环境读取环境变量包
  2. npm install -g cross-env
  3. #webpack打包工具
  4. npm install -g webpack

image.png

克隆 thingsboard 代码

git clone https://github.com/thingsboard/thingsboard.git

耐心等待一段时间后,看到以下界面就算下载成功

 image.png

切换 git 分支

默认下载的代码是 master 主分支的。

查看项目源码的所有分支,下载源码后,需要进入到 thingsboard 文件夹

 

最新版本是2.5的,但是本次先安装2.4的 

git checkout release-2.4

看到下图这样,即切换成成功

 image.png

准备工作

外网连接

因为 TB 在编译过程中需要依赖很多国外的包,那么需要外网才能连接,有连接外网支持,可以到社区求助:https://www.iotschool.com/topics/node8

设置 Maven 为淘宝镜像

工程是基于 Maven 管理,直接通过 idea open,之后会自动下载各种依赖包。依赖包的默认存储地址为:C:\Users\用户名.m2\repository,内容如下:

  1. $tree ~/.m2 -L 2
  2. /home/jay/.m2
  3. └── repository
  4. ├── antlr
  5. ├── aopalliance
  6. ├── asm
  7. ├── backport-util-concurrent
  8. ├── ch
  9. ...

一般情况下,使用官方镜像更新依赖包,网速不稳定,可将 Maven 镜像源设置为淘宝的,在 maven 安装包目录下找到 settings.xml 设置
大概位置截图:

把 settings.xml 里面内容设置成以下:

  1. <mirrors>
  2. <mirror>
  3. <!--This sends everything else to /public -->
  4. <id>aliyun_nexus</id>
  5. <mirrorOf>*,!maven_nexus_201</mirrorOf>
  6. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  7. </mirror>
  8. </mirrors>

不会设置的,可以参考这个文件:https://cdn.iotschool.com/iotschool/settings.xml

thingsboard QQ 群也有这个资源:121202538

设置 npm 为淘宝镜像

同上,网速不好 npm 过程中也会下载失败,这是导致很多同学 thingsboard 编译失败的主要原因,所以我们在进行编译之前,也将 npm 替换为淘宝镜像:

  1. npm install -g mirror-config-china --registry=http://registry.npm.taobao.org #使用淘宝镜像
  2. npm config get registry #查询当前镜像
  3. npm config rm registry #删除自定义镜像,使用官方镜像
  4. npm info express

执行 npm install -g mirror-config-china --registry=http://registry.npm.taobao.org 即可

设置 IDEA 管理员启动

我本地开发环境编译项目使用 IDEA 工具进行编译,所以需要设置管理员启动,这样才有所有的权限执行编译命令。 步骤 1:点击 IDEA 图标右键,选择属性。

 image.png

步骤 2:点击兼容性 - 更改所有用户设置 - 以管理员身份运行此程序

 image.png image.png

开始编译

编译项目跟网速有关,最好连接上外网进行编译,一般 5~30 分钟都有可能,超过 30 分钟要检查你的网络。

编译之前先去掉license检查:

(1)注释 thingsboard/pom.xml文件中有关liscense的配置信息,直接搜索"com.mycila"就可以找到下面的内容,大约在thingsboard/pom.xml文件的694行左右,修改如下:

  1. <!--注释配置项-->
  2. <!-- <plugin>
  3. <groupId>com.mycila</groupId>
  4. <artifactId>license-maven-plugin</artifactId>
  5. <version>3.0</version>
  6. <configuration>
  7. <header>${main.dir}/license-header-template.txt</header>
  8. <properties>
  9. <owner>The Thingsboard Authors</owner>
  10. </properties>
  11. <excludes>
  12. <exclude>**/.env</exclude>
  13. <exclude>**/*.env</exclude>
  14. <exclude>**/.eslintrc</exclude>
  15. <exclude>**/.babelrc</exclude>
  16. <exclude>**/.jshintrc</exclude>
  17. <exclude>**/.gradle/**</exclude>
  18. <exclude>**/nightwatch</exclude>
  19. <exclude>**/README</exclude>
  20. <exclude>**/LICENSE</exclude>
  21. <exclude>**/banner.txt</exclude>
  22. <exclude>node_modules/**</exclude>
  23. <exclude>**/*.properties</exclude>
  24. <exclude>src/test/resources/**</exclude>
  25. <exclude>src/vendor/**</exclude>
  26. <exclude>src/font/**</exclude>
  27. <exclude>src/sh/**</exclude>
  28. <exclude>packaging/*/scripts/control/**</exclude>
  29. <exclude>packaging/*/scripts/windows/**</exclude>
  30. <exclude>packaging/*/scripts/init/**</exclude>
  31. <exclude>**/*.log</exclude>
  32. <exclude>**/*.current</exclude>
  33. <exclude>.instance_id</exclude>
  34. <exclude>src/main/scripts/control/**</exclude>
  35. <exclude>src/main/scripts/windows/**</exclude>
  36. <exclude>src/main/resources/public/static/rulenode/**</exclude>
  37. <exclude>**/*.proto.js</exclude>
  38. <exclude>docker/haproxy/**</exclude>
  39. <exclude>docker/tb-node/**</exclude>
  40. <exclude>ui/**</exclude>
  41. <exclude>src/browserslist</exclude>
  42. <exclude>**/*.raw</exclude>
  43. </excludes>
  44. <mapping>
  45. <proto>JAVADOC_STYLE</proto>
  46. <cql>DOUBLEDASHES_STYLE</cql>
  47. <scss>JAVADOC_STYLE</scss>
  48. <jsx>SLASHSTAR_STYLE</jsx>
  49. <tsx>SLASHSTAR_STYLE</tsx>
  50. <conf>SCRIPT_STYLE</conf>
  51. <gradle>JAVADOC_STYLE</gradle>
  52. </mapping>
  53. </configuration>
  54. <executions>
  55. <execution>
  56. <goals>
  57. <goal>check</goal>
  58. </goals>
  59. </execution>
  60. </executions>
  61. </plugin>-->
  62. .....
  63. <!--紧跟着上面的这个就是这个隐藏信息-->
  64. <!-- <plugins>
  65. <plugin>
  66. <groupId>com.mycila</groupId>
  67. <artifactId>license-maven-plugin</artifactId>
  68. </plugin>
  69. </plugins>-->

(2)配置application\target\generated-sources\protobuf代码自动生成 ,还是在 thingsboard/pom.xml这个文件中搜索即可 ,大约在653行左右

  1. <configuration>
  2. <sources>
  3. <source>${basedir}/target/generated-sources</source>
  4. <!--配置application\target\generated-sources\protobuf代码自动生成-->
  5. <!-- source>${basedir}/target/generated-sources</source -->
  6. <source>${basedir}/target/generated-sources/grpc-java</source>
  7. <source>${basedir}/target/generated-sources/java</source>
  8. </sources>
  9. </configuration>

(3) 注意经过将数据库安装好了之后,创建好thingsboard数据库的所有表之后,还要将项目中的内容配置进行修改下,在application/src/main/resources/thingsboard.yml这个文件里,找到下面的内容,将默认的数据库名postgres改为thingsboard。

  1. datasource:
  2. driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
  3. url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
  4. username: "${SPRING_DATASOURCE_USERNAME:postgres}"
  5. password: "${SPRING_DATASOURCE_PASSWORD:*****}"<!--数据库的设置的密码,在项目中是明文-->
  6. hikari:
  7. maximumPoolSize: "${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:5}"

 

清理项目编译文件

使用 IDEA Maven 工具进行清理

 image.png

输入编译命令开始编译

在 IDEA 控制台(左下方)Terminal 输入以下命令进行编译:

mvn clean install -DskipTests

image.png

等一段时间后,看到下面这张图就算编译成功,如果没有编译成功请按照本教程最后的常见问题进行排查,一般都是网络问题。如果还有问题,请到社区thingsboard 专题中提问。

image.png

缓存导致编译失败

每次编译失败进行二次编译时,要清理缓存,并杀死遗留进程 步骤 1:执行下面命令,杀死遗留进程

taskkill /f /im java.exe

步骤 2:使用 IDEA Maven 工具进行清理

 image.png

温馨提示:要进行二次编译前,最好重启一次电脑!

Server UI 编译失败

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:npm (npm install) on project ui: Failed to run task: 'npm install' failed. (error code 1) -> [Help 1]

image.png

如果遇到这个问题,可从以下几个原因进行分析:

原因 1:node、npm 版本号问题

本地环境安装的 node、npm 版本号与源码中 pom.xml 文件配置的版本号不一致。

解决方案: 步骤 1:使用 node -v、npm -v 查看安装的 node 和 npm 版本号

 image.png

步骤 2:修改源码中 pom.xml 文件中的版本号

  1. <configuration>
  2. <nodeVersion>v12.13.1</nodeVersion>
  3. <npmVersion>6.12.1</npmVersion>
  4. </configuration>

需要修改的文件有三处,位置如下:

 image.png

原因 2:node-sass 下载失败

编译 Server UI 时,会下载 node-sass 依赖,如果因为网络原因没有下载成功,也会编译失败。如果你是按照本本教材一步一步来的,应该不会有问题,上面准备工作中,将 npm 镜像源切换为淘宝,那么下载会很快的。

  1. [INFO] Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-72_binding.node
  2. [ERROR] Cannot download "https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-72_binding.node":
  3. [ERROR]
  4. [ERROR] ESOCKETTIMEDOUT
  5. [ERROR]
  6. [ERROR] Hint: If github.com is not accessible in your location
  7. [ERROR] try setting a proxy via HTTP_PROXY, e.g.
  8. [ERROR]
  9. [ERROR] export HTTP_PROXY=http://example.com:1234
  10. [ERROR]
  11. [ERROR] or configure npm proxy via
  12. [ERROR]
  13. [ERROR] npm config set proxy http://example.com:8080
  14. [INFO]
  15. [INFO] > node-sass@4.12.0 postinstall F:\workspace\thingsboard\thingsboard\ui\node_modules\node-sass
  16. [INFO] > node scripts/build.js
  17. [INFO]

image.png

解决方案:切换镜像源为淘宝

解决方案:重启电脑,清理缓存

原因 3:Thingsboard 3.0 版本编译遇到的问题

亲测:2.4 版本也可以通过这种方式来解决

Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.7.5:npm (npm install) on project ui-ngx: Failed to run task: 'npm install' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: -4048 (Exit value: -4048) -> [Help 1]

解决方案:https://www.iotschool.com/topics/84

原因 4:二次编译导致残留进程

报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project ui: Failed to clean project: Failed to delete F:\workspace\thingsboard\thingsboard\ui\target\node\node.exe -> [Help 1]

image.png

Server Tool 编译失败

image.png

  1. [ERROR] Failed to execute goal on project tools: Could not resolve dependencies for project org.thingsboard:tools:jar:2.4.3: Failed to collect dependencies at org.eclipse.paho:org.eclipse.paho.client.mqttv3:jar:1.1.0: Failed to read artifact descriptor for org.eclipse.paho:org.eclipse.paho.clien
  2. t.mqttv3:jar:1.1.0: Could not transfer artifact org.eclipse.paho:org.eclipse.paho.client.mqttv3:pom:1.1.0 from/to aliyun_nexus (http://maven.aliyun.com/nexus/content/groups/public/): Failed to transfer file http://maven.aliyun.com/nexus/content/groups/public/org/eclipse/paho/org.eclipse.paho.cli
  3. ent.mqttv3/1.1.0/org.eclipse.paho.client.mqttv3-1.1.0.pom with status code 502 -> [Help 1]

一般由于网络原因,IoTSchool 小编至少编译了 3 次才成功,每次编译都重启电脑,并清理环境。

解决方案:如果使用的是 mvn clean install -DskipTests 命令进行编译,那么就多尝试几次,每次编译前,要清理环境。

参考:https://github.com/thingsboard/performance-tests/issues/10

JavaScript Executor 编译失败

JavaScript Executor Microservice 编译失败

 image.png

  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) -> [Help 1]
  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 <goals> -rf :js-executor

原因:本地缓存缺少 fetched-v10.15.3-linux-x64 和 fetched-v10.15.3-win-x64 这两个文件。

解决方案: 步骤 1:下载这两个文件到本地,下载后记得重命名,下载地址:https://github.com/zeit/pkg-fetch/releases

 image.png

步骤 2: 将下载的两个文件放到:放到:C:\Users\你的用户名 \ .pkg-cache\v2.6。并将名字分别修改为:fetched-v10.15.3-linux-x64 和 fetched-v10.15.3-win-x64

windows  创建 .pkg-cache 使用cmd

mkdir .pkg-cache

参考:https://github.com/thingsboard/thingsboard/issues/2084

较新的版本用的是10.17,干脆两个都下了

笔者执行这些操作仍然有问题,又进行了以下操作(我是UI模块报的错):

进入\thingsboard\ui  删除:

执行:

npm cache clean --force

--force  是5.0之后包管理方式变了之后需要加。

然后在当前目录执行:

等待。。。。

然后在IDEA里执行mvn install

image

运行ThingsBoard服务main方法

image

报错:Failed to date mail configuration. Settings not found

原因:没有导入测试数据:

mac/linux进入:\thingsboard\application\target\bin\install

windows进入:\thingsboard\application\target\windows

执行:install_dev_db.sh/bat

最后浏览器输入:http://localhost:8080进行访问

License 检查不通过

[ERROR] Failed to execute goal com.mycila:license-maven-plugin:3.0:check (default) on project thingsboard: Some files do not have the expected license header -> [Help 1]

解决方案:在根目录 pom.xml 中屏蔽 license-maven-plugin

image.png

搜索 license-maven-plugin,将整个 plugin 都注释掉

 image.png

Web UI 编译失败

Web UI 编译失败请参考Server UI 编译失败第一个原因

maven:Could not resolve dependencies for project org.thingsboard:application:

错误信息

[ERROR] Failed to execute goal on project application: Could not resolve dependencies for project org.thingsboard:application:jar:2.4.1: The following artifacts could not be resolved: org.thingsboard.rule-engine:rule-engine-components:jar:2.4.1, org.thingsboard:dao:jar:2.4.1: Could not find artifact org.thingsboard.rule-engine:rule-engine-components:jar:2.4.1 in jenkins (http://repo.jenkins-ci.org/releases) -> [Help 1]

解决方案:根目录下去 maven 编译,不要在每个单独编译,否则不能自动解决依赖,如果你已经在子模块进行了编译,请回到根目录先 clean 一下,再重新编译。

maven:Failed to delete tb-http-transport.rpm

错误信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project http: Failed to clean project: Failed to delete D:\my_project\thingsboard\transport\http\target\tb-http-transport.rpm -> [Help 1]

解决方案:第一次编译失败,再次编译可能会提示该错误,可以手动到报错路径删除,如果提示文件正在使用,需要在任务管理器杀死 java 进程后再手动删除。

npm:npm:cb() never called!

错误信息:

  1. npm ERR! cb() never called!
  2. npm ERR! This is an error with npm itself. Please report this error at:
  3. npm ERR! <https://npm.community>
  4. npm ERR! A complete log of this run can be found in:
  5. npm ERR! C:\Users\yuren\AppData\Roaming\npm-cache\_logs\2019-11-06T10_55_28_258Z-debug.log

解决方案: 尝试 npm cache clean --force 后再次 npm install 无果; 尝试更换淘宝镜像源后再次 npm install 无果; 怀疑有些包下载需要翻墙,全局代理翻墙后问题依然存在; 参考网上关闭所有代理后问题依然存在; 通过 log 日志分析最后一个解包报错的地方,屏蔽需要的 material-design-icons,新 modules rxjs 仍然报错;

  1. extract material-design-icons@3.0.1 extracted to node_modules\.staging\material-design-icons-61b4d55e (72881ms)
  2. extract rxjs@6.5.2 extracted to node_modules\.staging\rxjs-e901ba4c (24280ms)

参考 npm ERR cb() never called 执行

npm install --no-package-lock

之后提示 npm ERR! path git,添加 git 到环境变量后正常。

npm:npm ERR! path git

错误信息

  1. npm ERR! path git
  2. npm ERR! code ENOENT
  3. npm ERR! errno ENOENT
  4. npm ERR! syscall spawn git
  5. npm ERR! enoent Error while executing:
  6. npm ERR! enoent undefined ls-remote -h -t git://github.com/fabiobiondi/angular-

解决方案:添加 git 到环境变量。

No compiler is provided in this environment

错误信息:

  1. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.
  2. 1:compile (default-compile) on project netty-mqtt: Compilation failure
  3. [ERROR] No compiler is provided in this environment. Perhaps you are running on
  4. a JRE rather than a JDK?

需要在环境变量中设置 java,包含%JAVA_HOME%bin;%JAVA_HOME%lib;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/262683
推荐阅读
相关标签
  

闽ICP备14008679号