问题标签 [leiningen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
178 浏览

clojure - 将项目属性设置为非文字字符串似乎在 leiningen 中不起作用

取一个简单的项目文件:

(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT" :description "Sample clojure application - clojure 1.3 !" :blah "hello")

当我阅读(获取项目:blah)时,我得到“hello”字符串返回 - 正如预期的那样。

如果我替换“你好”

:blah (slurp "some file...")

我收到一个错误,原因是:java.lang.ClassCastException:clojure.lang.PersistentList 无法转换为 java.lang.String

它似乎没有按照我的预期评估事情,有什么想法吗?

0 投票
2 回答
3215 浏览

unit-testing - 如何将单元测试添加到 Leiningen 项目?

我注意到 leiningen 有一个很棒的单元测试插件——你只需输入“lein test”:)。但是,尚不清楚它如何“找到”测试文件。我需要将它们放入特定的文件夹吗?或者,如果它只是扫描命名空间(这是 lein 文档中所说的),我怎么知道我需要使用什么命名空间来让 leiningen 看到我的测试?

我正在考虑简单地制作一个名为tests.clj 的测试文件。一个示例模板真的很好。

0 投票
2 回答
2497 浏览

clojure - Compojure:生产中的 lein 环?

似乎人们建议使用 lein-ring 来轻松部署 Compojure 应用程序。不就是为了发展吗?我已经对使用 lein-ring 运行的同一个应用程序与使用 uberjar 的 leiningen 打包(使用 java -jar 执行,它包含 ring-jetty)进行了基准测试。

令我惊讶的是,使用 lein-ring 的性能甚至更好!我错过了什么吗?

我怎样才能继续使用 lein-ring 但避免在出现异常时打印出堆栈跟踪并避免检查修改过的文件?

谢谢

0 投票
1 回答
518 浏览

unit-testing - 如何在 Leiningen 打印测试名称?

我想在运行时打印我的每个 leiningen 测试方法。我有一个相对简单的 lein 测试文件:

我想在运行测试时在 repl 上看到“test1”打印出来。是否有一种简单的方法来打印方法名称(通过在 myfixture 中调用 b 的方法,或者在调用“lein test”时)?

0 投票
2 回答
15316 浏览

clojure - 使用 ring/compojure 提供静态文件 - 来自战争

使用 ring(和 lein-ring 工具)——我可以在开发中运行时根据文档从“资源”等中提供静态文件——但是——当我通过 Lien uberwar 打包东西时,我不知道如何制作它在容器中运行时提供这些文件。我在 wrap-resource 或设置 :resource-path 上看到有冲突的文档,但似乎没有一个有效。

0 投票
1 回答
976 浏览

tomcat - Compojure:访问文件系统

这是我的 project.clj 文件:

这是我的路由:

我有一些网络静态文件/resources/public,我可以访问它们。在代码中,我还需要访问文件系统上位于/resources/data和上的一些文件/resources/tpl。使用lein ringserver or lein run,以下调用工作正常

但是当使用 Tomcat 打包应用程序lein uberwar并在 Tomcat 下部署时,它失败了,我得到了 FileNotFoundException。这可能是因为 lein 的当前工作目录是项目根目录,而在 Tomcat 下它是 Tomcat 的 bin 目录。

例如,我已经/resources/data/data.dat在战争中打包了,因为/data/data.dat“resources/data/data.dat”在 Tomcat 下不起作用,或者“data/data.dat”在开发中不起作用。

顺便说一句,在 Compojure 中管理这个的正确方法是什么?谢谢。

0 投票
1 回答
1961 浏览

maven - Leiningen:如何在 project.clj 中设置 Maven groupId 和打包属性

我有一个 Clojure 项目,我想打包并在我的一个使用 Maven 的 Java 项目中使用它。

当我使用 Leiningen 生成 pom.xml 文件时,它将 groupId 设置为 artifactId,但我需要 groupId 与我的父 Java 项目相同。

另外,我希望能够将 pom.xml 中的包装类型指定为 jar

简而言之:如何在 project.clj 中设置 groupId 和包装属性以生成包含这些属性的 pom.xml?

0 投票
1 回答
556 浏览

clojure - 如何让 Lein 使用 JFreeChart 和 Dejcartes?

我试图了解如何将 lein 与 clojure 一起使用并让它在 Win7 x64 上下载正确的 .jar 文件。作为一个具体的例子,我正在尝试使用 JFreeChart 和 Dejcartes。

我的问题是通用的,并不特定于 JfreeChart。我基本上不明白如何缩小看到使用某些特定包的示例与通过 lein 为我提供该包之间的差距。希望有人可以以适用于其他软件包的方式回答。

请参阅此链接:https ://github.com/markmfredrickson/dejcartes/blob/master/Readme.txt 我的 project.clj 是这样的(注释掉这篇文章的最后两行)。

  1. 我看到(import '(org.jfree.chart chartframe))在 Dejcartes readme.txt 中使用过,所以我认为这意味着我需要 JFreeChart 的 .jar 文件,对吧?

    我输入[org.jfree/chart "1.0.13"]了我的 project.clj 但lein deps抱怨如下:

    我想我需要直接下载 .jar 文件,但是一旦我有了 .jar 文件,我该如何哄 lein 把它放在我的类路径中,这样我就可以使用 emacs 等来处理它?

  2. Dejcartes 示例使用(require '[com.markmfredrickson.dejcartes :as chart]),所以我放入[com.markmfredrickson/dejcartes "1.0.0"]了我的 project.clj。当我运行时,这似乎开始下载一些东西,lein deps但随后它以同样的方式窒息:

    据称从 (clojars) 下载的其中一个存储库甚至没有在大列表中显示 Dejcartes。如何让 Lein 下载 Dejcartes?

  3. 最后,考虑到我想开始使用一些包,我如何让 lein 自动找到最新版本?我还没有看到任何关于此的内容,并且所有 project.clj 示例似乎都对版本进行了硬编码,例如"1.0.2"等。

非常感谢

迈克尔

0 投票
5 回答
4402 浏览

emacs - 使用 leiningen 为 clojure 设置 emacs/slime/swank

简短版本:使用 lein swank 启动 swank 服务器时,运行 Mx slime-connect 或 Mx clojure-jack-in 时出错。

我在 Ubuntu 10.10 上使用 emacs 24.0.50.1。我在 ELPA 的 emacs 中安装了以下软件包:clojure-mode、paredit、slime、slime-repl

我从 github 安装了 leiningen 并将其添加到类路径中,然后运行 lein plugin install swank-clojure 1.3.3​​. 之后,我创建了一个新目录 ~/tmp/,cd 进入它并运行: lein new test-project这似乎设置一切正常。然后我在emacs中打开/tmp/new-project/project.clj,改成:

之后,我回到 /tmp/new-project 文件夹,lein deps然后运行lein swank以下载依赖项并启动 swank 服务器,该服务器提供输出:

回到 emacs 中,我遇到了让它连接到 swank 服务器的问题。我尝试打开 core.clj 文件并运行M-x slime-connect它给出了错误:

这让我认为它要么没有看到 swank 服务器正在运行,要么需要进行一些配置才能看到服务器。我也尝试过(打开相同的文件并打开 project.clj)M-x clojure-jack-in,我假设它尝试在项目文件夹中启动 clojure REPL,但这给出了以下内容:

我按照http://matthias-schneider.org/docs/clojure-setup/的指示进行 emacs 包和 lein 设置,然后开始按照 http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html 的测试配置说明进行操作让 Mx slime-connect 打开 REPL 时遇到问题。

更新

删除 ~/tmp/test-project,卸载 emacs 和 /.emacs.d/elpa/ 包,重新安装 emacs,重新安装 clojure-mode 和 paredit 包,将 ~/.lein 复制到 /bin 以确保没有路径问题(之前'不确定 /.lein 或 /.lein/bin 是否需要在路径中)。跑/.lein/bin/swank-clojure然后打开 emacs,打开 project.clj,然后尝试M-x slime-connect,它现在要求我提供主机(本地默认),端口(默认 4005),说连接到 swank,给出关于 swank 和 slime 版本不同的消息(y 或n) y,那么 minibuffers 给出error in process filter: Lisp connection closed unexpectedly. 在我运行/.lein/bin/swank-clojure以下java错误的终端中弹出:

更新: 已解决,我需要卸载 emacs 并删除所有 /.emacs.d/,而不仅仅是 /elpa/ 中的包。重新安装后,我只得到了 clojure-mode 包,而不是 slime 或 slime-repl。现在可以连接M-x clojure-jack-in并准备做一些工作!

0 投票
1 回答
1501 浏览

build - Leiningen 在构建工作 uberjar 时遇到问题

我们正在尝试使用 Leiningen 构建我们的 Clojure 项目。我们通过执行以下操作成功创建了一个 uberjar:

先决条件:

  • project.clj 文件列出了依赖项
  • :main my-project.core在项目.clj
  • 带有-main函数的 core.clj 文件
  • (:gen-class :main true)在 core.clj 中

程序:

  • 跑了lein test;无故障完成
  • 跑了lein deps;顺利完成
  • 来自 project.clj 的目录:rainlein uberjar
  • 这创建了两个 jar 文件:My-Project-1.0.0-SNAPSHOT-standalone.jar 和 My-Project-1.0.0-SNAPSHOT.jar。
  • 跑了java -jar BioClojure-1.0.0-SNAPSHOT-standalone.jar,这导致了这个异常:

线程“main”中的异常 java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效

我对这个问题的研究没有取得成果。 显然,这是一个没有好的解决方案的已知问题。我不明白那里的答案。

我们需要做什么才能让我们的 uberjar 正常工作?

  • 确定我们的哪个依赖项导致了问题?
  • 从我们的项目中删除依赖项?
  • 以其他方式编译项目?
  • 补丁莱宁根?
  • 使用建议的命令:( zip *-standalone.jar -d META-INF/DUMMY.SF我不知道这是做什么的)
  • :uberjar-exclusions在 project.clj 文件中做些什么?(如果有,是什么?)

Lein 和 java 版本:


更新:运行建议的命令给出: