編譯metabase

雖然我對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不熟,不知道真正開發時是不是也是這樣的,如果這樣那不是痛苦死了。後面慢慢了解吧

截個圖慶祝一下吧

在這裏插入圖片描述

如果有幫助,請點贊哦:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章