ThingsBoard從零開始之編譯
一、安裝準備
Win10電腦一臺【thingsboard2.4.3】
二、所需軟件
IDEA、Navicat Premium、Git、Maven、Node、Fq軟件
三、環境配置
1. Git
https://git-scm.com/download/win
下載64-bit Git for Windows Setup.64位軟件並安裝,並配置Git全局環境變量。
cmd輸入git version,如果出現git version xxx.xxx.xx 表示成功。
2.JDK
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html下載jdk-8u251-windows-x64.exe並且安裝。打開cmd輸入java如果沒有反應,就配置java的環境變量。
JAVA_HOME和Path。然後再打開CMD輸入java和javac
3.MAVEN
http://maven.apache.org/download.cgi下載apache-maven-3.6.3-bin.zip
解壓到文件夾中。文件目錄儘量不要包含中文。
然後配置Maven的環境變量。MAVEN_HOME和Path,參考java的環境變量配置。
然後打開CMD輸入mvn -v查看mvn版本,如果有maven信息表示maven安裝完畢。
接下來配置maven的鏡像。
打開\Program Files\apache-maven-3.6.3\conf\setting.xml
找到mirrors標籤的位置,把下邊的mirror複製進去。
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <!--This is used to direct the public snapshots repo in the profile below over to a different nexus group --> <id>nexus-public-snapshots</id> <mirrorOf>public-snapshots</mirrorOf> <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url> </mirror> |
4.Node
https://nodejs.org/zh-cn/download/ 下載windows64位安裝包,然後安裝,它會自動把node添加到環境變量中。安裝完成後打開CMD,輸入node -v、npm -v
然後給node配置淘寶鏡像
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org
四、編譯步驟
1)工作空間
新建工作空間workspace-thingsboard
2)克隆代碼
在工作空間中鼠標右鍵Git Bash Herer
輸入
git clone https://github.com/thingsboard/thingsboard.git
克隆代碼到工作空間,然後查看所有分支,並切換到2.4的分支。
git branch -a
git checkout origin/release-2.4
3)修改源碼
用IDEA(以管理員啓動)打開源碼。
4.3.1 修改node和npm版本
Ctrl Shift F全局搜索代碼nodeVersion共有三處地方的pom文件需要修改
這裏的nodeVersion和npmVersion要改成cmd中node -v 和npm -v出來的版本。
4.3.2 註釋License
找到thingsboard根目錄的pom註釋com.mycila這個插件
4.3.3 註釋assembly
找到msa/js-executor底下的pom文件,註釋maven-assembly-plugin這個插件
4)編譯源碼
以管理員身份啓動CMD,進入thingsboard目錄,輸入
mvn clean install -DskipTests
五、常見問題
1)進程未殺死導致資源被佔用
[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]
二次編譯時要先打開任務管理器,進入詳細任務,搜索node和java,並且殺死這兩個進程
或者在cmd中輸入
taskkill /f /im java
taskkill /f /im node
2)Git未配置環境變量
npm ERR! path git
npm ERR! code ENOENT
npm ERR! errno ENOENT
npm ERR! syscall spawn git
npm ERR! enoent Error while executing:
npm ERR! enoent undefined ls-remote -h -t git://github.com/fabiobiondi/angular-
3)License 檢查不通過
註釋thingsboard根目錄pom中的license插件
4)非Server UI模塊報錯
一般情況下都是網絡問題
這些模塊報錯可能需要fq軟件,tb依賴了一些國外的jar包。
看報錯信息提示,適當的加入 -X -rf命令進行調試
-X是以debug模式查看mvn構建 -rf是從指定報錯的模塊開始編譯,可以省去很多時間,專注於處理報錯的模塊。
如:
mvn clean install -DskipTests -X -rf :tb
mvn clean install -DskipTests -X -rf :black-box-tests
切記,每次編譯都要清理內存中的進程。
5)Server UI模塊報錯
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org #使用淘寶鏡像
npm config get registry #查詢當前鏡像
npm config rm registry #刪除自定義鏡像,使用官方鏡像
npm info express
- 首先要檢查pom中的nodeVersion是否替換,其次檢查當前node使用的鏡像源是否爲淘寶。
- 檢查ui文件夾中的target/node中的node.exe是否正常。並刪除 ui 目錄下面的 node_modules 文件夾
- 清理node緩存,在cmd中執行
npm cache clean -f
如果報錯了,切記重啓電腦之後,再次進入,因爲殺死node進程之後,緩存可能還存在被佔用的情況。
- 執行
npm update
- 執行
mvn clean install -DskipTests -X -rf :ui
- 也可以單獨進入ui目錄,執行npm install進行單獨調試,如果那個模塊報錯了,如node-sass報錯了,就單獨執行npm install node-sass查看具體錯誤信息,一個一個模塊進行解決排查
Tip可能存在的問題:
- 確保ui目錄的權限,是用戶完全控制狀態,有可能會因爲權限問題,無法刪除某些文件,而導致報錯。
- 缺少windows構建插件
MSBUILD : error MSB3428: 未能加載 Visual C++ 組件“VCBuild.exe”。要解決此問題,1) 安裝 .NET Framework 2.0 SDK;2) 安裝 Microsoft Visual Studio 2005;或 3) 如果將該組件安裝到了其他位置,請將其位置添加到系統路徑中。
npm install --global --production windows-build-tools
這個問題會導致node-sass編譯失敗。
- Target中的node不可用,可以連上外網進行下載編譯
設置node代理,打開fq軟件,搜索電腦的proxy,查看代理服務器ip和端口
npm config set http-proxy 127.0.0.1:31233
npm config set prox=http://127.0.0.1:31233
注意要及時刪除代理
npm config list
npm config delete proxy
npm config delete proxy-http
6)找不到org.thingsboard.server.gen.js.xxx
在編譯完成後,重新
mvn clean
mvn clean install -DskipTests
六、社區熱線
推薦兩個thingsboard的社區,非常之無措,大家異常活躍。
QQ羣
726442610
121202538
最後貼圖鎮樓:祝大家都能編譯成功早日踏上tb的大軍!