Clojure 如何与leiningen一起使用签入罐子

Clojure 如何与leiningen一起使用签入罐子,clojure,leiningen,Clojure,Leiningen,我们在我们的项目中签入了一些第三方JAR。我们想将它们添加到类路径中。就这样。我们不想建立一个本地maven回购协议(因为这会打破我们的“签出并运行”理念)。每个开发者都必须建立自己的maven回购协议,这与项目不同 有没有办法做到这一点或这一点?我看到的大多数答案都是设置一个本地maven,我们不希望或不需要它,只需向类路径添加一个jar。这个问题已经得到了回答 这确实是可能的,但存在maven和依赖关系管理是有原因的。如果您有许多依赖项,建议使用更改版本的方法创建repo。您需要设置一个本地

我们在我们的项目中签入了一些第三方JAR。我们想将它们添加到类路径中。就这样。我们不想建立一个本地maven回购协议(因为这会打破我们的“签出并运行”理念)。每个开发者都必须建立自己的maven回购协议,这与项目不同


有没有办法做到这一点或这一点?我看到的大多数答案都是设置一个本地maven,我们不希望或不需要它,只需向类路径添加一个jar。

这个问题已经得到了回答


这确实是可能的,但存在
maven
和依赖关系管理是有原因的。如果您有许多依赖项,建议使用更改版本的方法创建repo。

您需要设置一个本地maven存储库,但可以是项目目录中的一个简单目录,然后签入到源代码管理。(这将维持您的“退房和跑步”政策)

从Leiningen 2.2.0开始,部署JAR的功能是任务内置的。因此,任务比以前的版本简化了

在项目中创建一个目录,在本例中称为
myrepo
。(名称是任意的)

project.clj
文件中添加一个
:repositories
条目,其中包含您创建的本地目录的路径

:repositories [["localrepo1" "file:myrepo"]]
将您的自由浮动jar部署到repo

lein deploy localrepo1 com.blueant/fancypants 1.0.1 fancypants.jar
并且,将依赖项添加到项目中。clj
:依赖项
向量与正常情况相同

:dependencies [[com.blueant/fancypants "1.0.1"]]
deploy任务将生成绑定到lein依赖项解析所需的校验和和目录结构。您可以使用
leindeps:tree
命令验证jar是否正确加载

注意:存储库中的文件路径被格式化为URL。所以,
/Users/user1/Desktop
file:///Users/user1/Desktop
,项目中的一个本地目录,
myrepo
file:myrepo

我想详细说明一下,这对我也有帮助

下面是一个脚本,它自动化了将多个JAR从本地
lib
文件夹添加到本地存储库的过程:

#!/bin/sh
export LOCALREPO_USERNAME=
export LOCALREPO_PASSWORD=

for file in lib/*.jar
do
    name=$(basename "$file")
    basename=${name%.jar}

    echo "Deploying $basename"

    artifactId="local/$basename"
    lein deploy localrepo1 $artifactId 1.0 $file

    echo "[$artifactId \"1.0\"]" >> dependencies.log
done
可以添加到
project.clj
的Leiningen依赖项列表存储在
dependencies.log

在运行脚本之前,必须更新
项目.clj
中的
:存储库
条目,以便从环境中读取存储库用户名和密码:

  :repositories [["localrepo1" {:url "file:myrepo"
                                :username :env/localrepo_username
                                :password :env/localrepo_password}]]

这将阻止在运行脚本时显示存储库密码提示。

请注意,答案已超过两年,其中一些语句不再准确。您看过s3吗?谢谢,这解决了localrepo1找不到凭据的错误(你是说'lein deploy clojars'?)请参阅@siphiuel在这里的答案以获取补遗。完成此操作后,我尝试在我的core_test.clj中使用
(:require[com.blueant/fancypants“1.0.1]”)
和获取可怕的
在尝试lein测试时找不到fancypants\uuu init.class
等。建议?