2

我有一个插件,它曾经使用来自 contrib 的命令行,在 ns 中有以下内容,

(:use  [leiningen.compile :only [eval-in-project]]
       [clojure.contrib command-line logging])

以前可以工作,我猜因为 leiningen 也使用 clojure 和 contrib 它会自动在其类路径中,上面的新 contrib 结构变为,

(:use  [leiningen.compile :only [eval-in-project]]
       [clojure.tools cli logging])

似乎 leiningen 在其类路径中不包含来自 lib/ 的 jar,这失败了,是否有解决方法?

4

1 回答 1

0

正确的。除非您使用eval-in-project,否则您的代码将在 Leiningen 的类路径中运行。因此,您的项目可以使用 lein 的类路径上的任何代码。然而,这些都不是。

使用 cli 和记录的代码是否在 eval-in-project 调用中?如果是这样,这些 jars 需要依赖于您调用插件的项目,并且use必须将调用传递给 eval-in-project(有关更多信息,请参阅 eval-in-project 的文档)。

如果使用 cli 和 logging 的代码不在 eval-in-project 调用中,那么您可以将这些依赖项添加到您的插件项目中,它应该可以正常工作。如果您尝试在插件项目本身内测试插件,则需要添加:eval-in-leiningen true到您的 project.clj。

如果这没有帮助,请使用更多详细信息/代码扩展您的问题。

于 2012-04-28T04:29:57.997 回答