Clojure 部分代碼是按照 Java 生態的習慣打包發佈到 Maven 倉庫上面的.
做爲 npm 程序員, 我對 Maven 至關了解...
Clojars 是一個相似 Maven 的倉庫, 相對於 Maven, 更多包會發布在這裏.
通常要發佈 Clojure 或者 ClojureScript 模塊, 就是發佈到 Clojars.git
通常教程都是基於 Lein 或者基於 Boot 用 deploy 命令發佈,
可是對於不用 Lein 或者 Boot 的 cljs 開發者來講, 我就以爲挺不爽的.
那兩個東西啓動和部署太慢了, 因此一直在尋求替代方案嗎最後基於 cljs 快速冷啓動.程序員
我在論壇上發了一個帖子求助: Feature request: release to Clojars with ClojureScriptgithub
有人給了比較精闢的回覆npm
I’ve been doing this with the clj cli. You can generate dependencies and paths into yourpom.xml
fromdeps.edn
by runningclj -Spom
. Then runmvn deploy
. Here’s an example pom.xml file for a project I published: https://github.com/protocol55...
我一開始沒有看, 後來反應過來, 就是要先有一個 pom.xml
文件, 而後 Maven 就能上傳了.
後面的回覆當中還有給了一個更詳細的教程, 具體到命令怎麼用: Clojure projects from scratchbash
首先由於是 Clojars, 須要填寫這邊的帳號密碼, 本地先加一個配置文件 ~/.m2/settings.xml
:maven
<settings> <servers> <server> <id>clojars</id> <username>username</username> <password>password</password> </server> </servers> </settings>
後面的步驟主要是 clj -Spom
能夠生成 pom.xml
文件. 最後就是 mvn deploy
了.
生成的 pom.xml
有幾個地方是須要手動修改的, 默認沒有 Clojars 的配置.
我不重複了, 戳上面的原文連接看細節.
我按着跑了一遍, 最後跑成功了. 忽然感受清晰了.ide
而後我在想 pom.xml
是 XML 維護起來太麻煩了, 能不能用腳本處理一下,
想起來後面的回覆當中有人寫了 meyvn 這個工具.
是一個 Maven 的封裝的樣子. 忽然以爲可能就是作這個事情的.
Meyvn 依賴 clj
命令還有 mvn
命令, 因此須要 brew 提早安裝好.工具
安裝步驟的話, 首先在 $HOME/.clojure/deps.edn
ui
:aliases {:meyvn {:extra-deps {org.danielsz/meyvn {:mvn/version "1.0.5"}}}}
注意版本號用最新的吧, 可能之後版本安裝方式會簡化一下.this
而後要找一下系統當中 Maven 的安裝路徑, 須要執行一些命令:
brew install coreutils greadlink -f `which mvn` | awk '{gsub("bin/mvn", ""); print}' # 獲得結果 /usr/local/Cellar/maven/3.5.4/
拿到安裝路徑以後, 在 /user/local/bin/
建立一個命令 myvn
:
touch /usr/local/bin/myvn chmod +x /usr/local/bin/myvn
其中執行的腳本用到前面的路徑, 我這邊看起來簡單是這樣的:
#!/bin/sh M2_HOME=/usr/local/Cellar/maven/3.5.4/ clj -A:meyvn -m meyvn.core "$@"
保存以後就有一個可執行的命令了. 而後就是須要一個 meyvn 的配置文件 meyvn.edn
.
我看了下文檔沒寫清楚, 可是項目裏又一個神似的, 直接能夠抄:
https://github.com/danielsz/m...
{:pom {:group-id "org.danielsz", :artifact-id "meyvn", :version "1.0.5", :name "Better builds for Clojure"} :packaging {:jar {:enabled true :remote-repository {:id "clojars" :url "https://clojars.org/repo"}}} :scm {:enabled true}}
這些完成以後, 運行 myvn deploy
就會開始代碼的打包和部署了.
除此運行會自動下載依賴, 不少的依賴, 個人文章都快碼完了, 依賴尚未下載完...
後面運行好一些, 可是冷啓動仍是挺慢, 最終完成發佈仍是須要十幾秒.
此外帳號密碼彷佛讀取的時候前面 Maven 的配置, 因此直接經過了.
無論怎樣, 整個方案是能夠用來替代 Boot 來進行發佈的.
實際上用 clj
加上 mvn
命令應該說能夠很快的, 但出維護性方面不知道怎麼辦.我暫時先用這個方案, 後面想辦法改進.Meyvn 的文檔其實應該說只有 README, 用到其餘配置我還得想一想.