我如何使用与leiningen签到的罐子

Dar*_*ren 16 clojure leiningen

我们在我们的项目中签了一些第三方罐子.我们想将它们添加到类路径中.而已.我们不想建立一个本地的maven回购(因为这会破坏我们的'检查和运行'理念).每个开发人员都必须设置自己的maven仓库,与项目不同.

有办法做到这一点还是这样?我见过的大多数答案都说要设置一个我们不想要或只需要在类路径中添加jar的本地maven.

Jar*_*314 24

您需要设置一个本地maven存储库,但这可以是项目目录中的一个简单目录,然后您可以检入源控件.(这将保持您的"签出和运行"政策)

从Leiningen 2.2.0开始,部署jar的功能内置于lein deploy任务中.因此,该任务已从先前版本简化.

在此示例中,在项目内创建一个名为的目录myrepo.(这个名字是任意的)

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

:repositories [["localrepo1" "file:myrepo"]]
Run Code Online (Sandbox Code Playgroud)

将自由浮动的jar部署到repo.

lein deploy localrepo1 com.blueant/fancypants 1.0.1 fancypants.jar
Run Code Online (Sandbox Code Playgroud)

并且,正常情况下将您的依赖项添加到project.clj :dependencies向量中.

:dependencies [[com.blueant/fancypants "1.0.1"]]
Run Code Online (Sandbox Code Playgroud)

部署任务将生成与lein依赖关系解析相关联的校验和和目录结构.您可以使用该lein deps :tree命令验证jar是否已正确加载.

注意:文件路径:repositories格式为URL.所以,/Users/user1/Desktopfile:///Users/user1/Desktop,和,项目中的本地目录,myrepofile:myrepo.


sip*_*uel 7

我想详细说明@Jared314的优秀答案对我有帮助.

下面是一个脚本,它自动将多个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
Run Code Online (Sandbox Code Playgroud)

可添加到的Leiningen依赖项列表project.clj存储在dependencies.log.

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

  :repositories [["localrepo1" {:url "file:myrepo"
                                :username :env/localrepo_username
                                :password :env/localrepo_password}]]
Run Code Online (Sandbox Code Playgroud)

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