起源與碎碎念
這幾天公司要重構(gòu)ERP,讓我負責去研究主流開源ERP系統(tǒng)。本來讓我了解的是python的odoo堕虹,但是我對py太不熟練,項目代碼的依賴本身也很脆弱芬首,最后倒在了一個 Odoo LINE 1: SELECT * FROM ir_model WHERE state=‘manual‘ 錯誤上赴捞,卡了幾天搞不定,回頭反思感覺自己完全在浪費時間郁稍。分析一下:
- 為什么要看開源ERP——了解主流ERP設(shè)計思路螟炫,博采眾長
- 為什么是odoo——python膠水語言的插件式設(shè)計能夠?qū)崿F(xiàn)熱插拔自由增刪模塊;UI最好看的ERP艺晴;
- 為什么把我卡住了——對其技術(shù)棧太不熟悉+源碼依賴過于脆弱+源碼對系統(tǒng)環(huán)境要求太苛刻導致無法正常運行demo
于是我親自了解了一下有無具備類似優(yōu)勢的昼钻,Java版本的開源ERP系統(tǒng),能夠同樣地幫助我了解主流ERP設(shè)計思路封寞。最后的決定是Apache頂級項目之一Apache OFBiz然评,源碼在github上,版本號我選擇了 17.12 release
同樣地狈究,構(gòu)建過程中也踩了不少坑...
坑
1.Downloading https://services.gradle.org/distributions/gradle-3.2.1-bin.zip timeout
下載gradle超時碗淌。這個問題我很久以前鼓搗安卓的時候就很奇怪,為什么Android Studio就永遠下載不下來抖锥,我開網(wǎng)頁下載就很輕松...
這種情況可以去gradle官網(wǎng)下載對應版本壓縮包亿眠,然后放到對應的gradle目錄。這樣的話當檢測到已經(jīng)存在有下載好的gradle.zip后磅废,程序就不會再到外網(wǎng)費勁去下載了纳像。
2.gradlew cleanall loadall是干什么的
印象中從來沒見過gradle還有這種指令丫?
還真沒有拯勉,這兩個都是OFBiz在build.gradle中自定義的腳本竟趾,大概是導依賴+build的作用憔购。
3.resolve dependencies 'classpath'卡住
一看日志,jcenter岔帽,懂了玫鸟。
jcenter貌似是gradle版的maven中心倉庫之類,特別慢犀勒,特別容易超時或者宕掉屎飘。因此果斷設(shè)置鏡像。我win10系統(tǒng)的gradle路徑在C:\Users\xxx.gradle\文件夾下贾费,在這里新建一個init.gradle然后粘貼進去如下鏡像地址:
allprojects {
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/groups/public"
}
}
}
當然如果不喜歡阿里云的鏡像也可以自行搜索清華钦购,豆瓣等其他地方的鏡像源。
設(shè)置之后铸本,再次運行g(shù)radlew cleanall loadall肮雨,可以看到導入依賴時打印日志的網(wǎng)址從jcenter變成自己設(shè)置的了遵堵,當然速度也直接起飛箱玷。
4. javax.ws.rs依賴無法導入
報錯信息大概這樣:
Could not determine artifacts for javax.ws.rs:javax.ws.rs-api:2.1 Could not get resource 'https://nexus.server/content/groups/tenable-cloud/javax/ws/rs/javax.ws.rs-api/2.1/javax.ws.rs-api-2.1.$%7Bpackaging.type%7D'.
4.1解決方案
將
compile 'org.apache.tika:tika-parsers:1.20'
改為:
compile ('org.apache.tika:tika-parsers:1.20'){
exclude group: 'javax.ws.rs'
exclude module: 'javax.ws.rs-api'
}
compile 'javax.ws.rs:javax.ws.rs-api:2.1@jar'
4.2解決思路
首先查錯誤原因:轉(zhuǎn)義字符被錯誤地帶進了URL中(%7B與%7D分別是左右大括號),這樣的話問題就很簡單了陌宿,只需把用到javax.ws.rs依賴找出來锡足,exclude掉,然后手動再把這個javax.ws.rs依賴用不含轉(zhuǎn)義字符的方式加進來就好了壳坪。
然后定位問題語句:這里借鑒了二分法的思路(還好只有一處依賴用到了這個舶得,不然那么多依賴項,可能真要一條一條排查了)每次注釋掉一半依賴爽蝴,然后執(zhí)行g(shù)radlew cleanall loadall看是否打印這個錯誤日志沐批,逐漸縮小范圍直到定位出目標。最后定位到去掉
compile 'org.apache.tika:tika-parsers:1.20'
就不會報這個錯誤蝎亚,于是把這一行改掉九孩,問題解決。
5.Gradle Build時卡住
重啟解決80%的問題,Ctrl+D終止掉,然后重新執(zhí)行就...好了终蒂。
6.OFBiz的Banner都打印出來蜈垮,但卡在Building 91%不動
不用管它,反正這時候項目已經(jīng)成功運行了帅霜,而且訪問OFBiz開發(fā)者文檔中給的諸如https://localhost:8443/ordermgr/control/main等幾個地址都沒問題。
7.賬號密碼是啥
文檔中有的,第三個網(wǎng)址也有寫她君。默認賬號admin,默認密碼ofbiz
refer to:
https://blog.csdn.net/q2878948/article/details/111035219