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