用leiningen来运行和打包clojure项目

Posted 天空之城

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用leiningen来运行和打包clojure项目相关的知识,希望对你有一定的参考价值。

今天是2017年5月24日。隔壁team用clojure写了个工具,我们要拿来用,于是弄了个leiningen来尝试。还没有最后成功,先记录一下一些连蒙带猜的步骤,以免忘记。

 

一、单独运行的clojure

关于clojure是什么东西就自行百度了,简单说就是用Lisp语言写的程序,编译成.class放在jvm上面跑,所以是需要jre的。独立的clojure可以从官方网站找到,目前稳定版本是1.8,官网https://clojure.org/index。下载后是一个zip,里面有个jar是clojure-1.8.0.jar,可以像常用的jar那样运行,这样会得到一个REPL交互环境,当然需要预先配置好jre(java8)。

https://repo1.maven.org/maven2/org/clojure/clojure/1.8.0/clojure-1.8.0.zip

 

二、安装leiningen

这个是clojure上类似maven的东西。貌似它本质上就是整合了maven,会用到maven在当前用户下的配置文件,但应该不需要maven本身。安装和运行Leiningen也不需要预先安装clojure本身。官网 https://leiningen.org/,上面有安装方法,就是通过一个script(lein for linux,或者lein.bat for win)来安装和运行。

1. 用lein.bat self-install,安装出错,原因是无法下载lein它本身的jar。我在公司用代理,所以需要设置代理服务器。可以在lein script的最前面加上例如export HTTPS_PROXY=http://Username/Password@proxyserver:port的格式。

2. 如果仍然无法下载,可以尝试直接从leiningen的github那里下载,https://github.com/technomancy/leiningen/releases,目前有2.7.1版本,下载到的是一个zip,可以改后缀名为jar,然后按照message的提示,放到对应的位置,例如 c:/Users/abc/.lein/self-installs/leiningen-2.7.1-standalone.jar。也可以修改lein script内部查到jar的位置的变量,来指向这个jar。script内原文是这样的:

通过修改LEIN_HOME,来指向特定目录,例如 export LEIN_HOME="${LEIN_HOME:-"/home/test01/lein"}"。如有需要,再修改LEIN_JAR的指向,或者按照它的目录名来放置lein的jar。这样lein script就不会再尝试联网下载了。

 

三、运行和打包lein项目

由于实际项目中,都要用到第三方包,所以依赖关系的处理就无法避免了。用lein来运行和打包项目,就跟maven的道理一样。测试中遇到问题,就是jre链接不上lein的官方仓库clojars,提示SSL认证问题。这时可以用浏览器打开它的主页,保存网站的证书为cer文件,然后添加到jre的lib/security/cacerts文件中,这个是jre的默认证书仓库。具体步骤参考java的keytool的用法。

如果是在project.clj文件中指定了私有仓库,并且需要登录的,可以在project.clj对应的那个repository后面加上username和password,例如下面的配置。可以参照官方的例子 https://github.com/technomancy/leiningen/blob/stable/sample.project.clj,里面有注释提及。

["repo-releases" {:url "http://blueant.com/archiva/internal"

                          :username "abcd"

                          :password "1234"}]

 

 

而lein的几个简单用法如下:

lein repl:打开REPL环境。

lein run:运行项目。

lein uberjar:打包项目,包含依赖项。得到jar后就跟平常的jar没有区别了。

 

以上是关于用leiningen来运行和打包clojure项目的主要内容,如果未能解决你的问题,请参考以下文章

Java 和 Clojure 与 Leiningen

安装 Leiningen 以与 Clojure 一起使用

如何用 Leiningen 运行图书馆的`main`?

Clojure 学习笔记 1

[Clojure] 包管理器leiningen配置国内镜像仓库

clojure 项目构建 boot