Clojure China

简单粗暴把 Clojure 类库发布到 Clojars

#1

折腾了一晚上. 为了重新配置好发布到 Clojars 的较脚本.

现在的发布 Clojure(Script) 代码为模块, 发到 Clojars 上面, 还是挺繁琐的.

第一步是打包, 在 Boot 里对应 (pom)(jar). 第二步才是 (push). 另外还有大量的配置项和环境变量.

对于 Java 开发者来说这套方案大概不陌生, 但是作为 npm 用户, 看着很晕. 折腾很久基于网上的资料和自己以前的版本通过了一个脚本: https://github.com/mvc-works/coworkflow/blob/master/build.boot

(defn read-password [guide]
  (String/valueOf (.readPassword (System/console) guide nil)))

(set-env!
  :resource-paths #{"src"}
  :dependencies '[]
  :repositories #(conj % ["clojars" {:url "https://clojars.org/repo/"
                                     :username "jiyinyiyong"
                                     :password (read-password "Clojars password: ")}]))

(def +version+ "0.1.0")

(deftask deploy []
  (comp
    (pom :project     'mvc-works/coworkflow
         :version     +version+
         :description "Workflow"
         :url         "https://github.com/mvc-works/coworkflow"
         :scm         {:url "https://github.com/mvc-works/coworkflow"}
         :license     {"MIT" "http://opensource.org/licenses/mit-license.php"})
    (jar)
    (push :repo "clojars" :gpg-sign false)))

大致的意思是配置好项目之后, 直接往 Clojars 上发布. 中间 jiyinyiyong 是我的用户名, 在脚本里写死了. Clojars 的密码会在运行过程当中提示输入… 这样有 Clojars 账号就可以发布了.

严谨一点讲, 别人会说 GPG 的事情, 用来加密密码和对 jar 包做签名, 验证 jar 包的后续版本始终对应到一个可信的开发者… 然而太复杂了, 教程做得也不好, 不想弄. 不安全就不安全了… 如果连发类库的人都不够, 还什么安全不安全的. 以后再说.