雖然我對Clojure和React都不是很瞭解。這不影響我對Lisp的真愛,更不會影響我本地編譯Metabase。
我用的是windows操作系統。
讓我來總結一下我的編譯過程吧。
-
下載Metabase源碼
-
前端環境
-
後端環境
-
開始動手編譯
下載Metabase源碼
git clone https://github.com/metabase/metabase.git
docs/developers-guide.md中有寫編譯的步驟,可以參考
前端環境
安裝node
https://nodejs.org/zh-cn/
安裝yarn
https://yarn.bootcss.com/docs/install/#windows-stable
後端環境
安裝maven
這是java的包管理工具
安裝leiningen
這個是Clojure的包管理器,由於網絡的問題安裝時花了我好多時間。
官網https://leiningen.org/下載lein script.
然後在電腦上的Git bash,cd到metabase源碼目錄下,把lein script的目錄添加到path中,假設lein scripts的目錄是d:/tools
set path = d:/tools:$PATH
然後執行
lein self_install
由於網絡的原因,我裝了得有半個小時吧,其實它就是去github上下載了一個jar文件,同時做了一些設置。這個jar文件就是leiningen-2.9.3-standalone.jar。在這裏https://github.com/technomancy/leiningen/releases。下載到了C:\Users\你的用戶名.lein\self-installs目錄下
開始動手編譯
還是在之前的bash git中,執行
./bin/build
報錯了錯誤時
$ ./bin/build translations
Running 'yarn' to download javascript dependencies...
yarn install v1.17.3
$ echo $npm_execpath | grep -q yarn || echo '\033[0;33mSorry, npm is not support
ed. Please use Yarn (https://yarnpkg.com/).\033[0m'
'\033[0;33mSorry, npm is not supported. Please use Yarn (https://yarnpkg.com/).\
033[0m'
[1/5] Validating package.json...
[2/5] Resolving packages...
success Already up-to-date.
Done in 0.99s.
Running './bin/i18n/build-translation-resources' to build translation resources...
Compiling locales/ca.po for frontend...
+ Warning: removed 1 fuzzy translations
msgfmt: Java compiler not found, try installing gcj or set $JAVAC
msgfmt: compilation of Java class failed, please try --verbose or set $JAVAC
Building translation resources failed, please install 'gettext', or build without translations by running './bin/build no-translations'.
大意是找不到java的編譯器,但是javac命令是可以找到的,我就不知道爲什麼,難道是讓我設置$JAVAC=javac,我沒試,直接用了./bin/build no-translations
下面就是漫長的等待時間了,既要下載需要的clojure包也要下載npm包,鬼知道我折騰了多久。網絡環境阻礙了中國的技術進步呀:(
由於這個過程是我編譯成功後再總結的,可能丟失了一些細節,我已經回憶不上來了。還要補充一下,我機器上安裝了Clojure的REPL,我不知道如果沒有這個東西能不能編譯成功(我猜大概率可以成功的,但是我沒有功夫卸載之後再編譯)。我電腦很久以前也安裝了jdk,版本是
java 12.0.2 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
如果老天保佑的話,你也會成功的,那麼在target\uberjar目錄下就會有metabase.jar,執行試試吧java -jar metabase.jar
真是太難了,java -jar metabase.jar運行成功了,但是在瀏覽器中輸入localhost:3000確實白頁面,瀏覽器中報錯
我只關注了這條錯誤,其實始作俑者是第一條報錯。瀏覽器限制了inline script的執行,而index.html頁面中有幾段inline的腳本。我實在搞不清楚爲什麼hash值不一致,只能把這個限制幹掉了,在metabase\src\metabase\middleware\security.clj中加入了"‘unsafe-inline’",從新打包./bin/build uberjar
還要提一下,不知道是我電腦的原因,還是代碼量太大,編譯一次要很長時間,十分鐘起步吧。我對Java和Clojure不熟,不知道真正開發時是不是也是這樣的,如果這樣那不是痛苦死了。後面慢慢了解吧
截個圖慶祝一下吧
如果有幫助,請點贊哦:)