如何强制让 lein deps 重新获取本地的 jars/libs?

17

使用以下指令:

http://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen/

我将一些本地的JAR文件安装到了本地仓库中。

当我想要更新项目中的JAR文件时,我会重新安装该JAR文件到仓库中,然后运行"lein deps"指令。但我发现无论如何,该JAR文件在我的项目中都没有被更新。即使我删除libs文件夹中的所有内容(据我所知),新的JAR文件也不会被拾取。我唯一能够让它工作的方法是更改JAR文件的名称。

这有点奇怪,因为它甚至在我删除旧JAR文件的所有痕迹之后仍出现此问题——Lein是否隐藏了一个libs的快照/缓存?

3个回答

35

Leiningen 使用 Maven 进行依赖管理。默认情况下,Maven 将其存储库存储在

$HOME/.m2/repository

在 leiningen 2 版本之前,依赖项会被复制到 <projecthome>/lib 目录下,但是版本 2 及以后的版本会直接指向仓库构建类路径。

因此,删除本地 Maven 仓库中的 jar 包,这样你就可以强制重新下载了。

另外,对于快照依赖项来说,Maven 默认每天只检查一次新的快照版本。在 Maven 中可以使用 -U 标志来强制更新。我不认为 Leiningen 会暴露这个功能,但你可以...。(请参见 barry-wark 的答案)

# force update of snapshots before starting repl
$ lein -U repl

1
谢谢!这正是我在寻找的信息。 - hiroprotagonist
1
请注意,在lein 2中,jar包不再复制到项目lib目录中。 - uvtc

13

lein 2 中,您可以使用 -U 标志,例如:

lein -U jar

0

删除 .m2 文件夹。然后它将重新获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接