gpt4 book ai didi

maven - Leiningen使用相同版本号重新安装后不下载依赖项

转载 作者:行者123 更新时间:2023-12-03 09:27:47 26 4
gpt4 key购买 nike

这真的很重要,我完全被难住了,而且时间紧迫。非常感谢您的帮助。

我有一个名为 red-black 的 Clojure 项目,其中特别包含一个名为 Interval_tree.clj 的文件

我一直在使用 lein uberjar 编译这个项目,然后通过将生成的 jar 安装在本地 Maven 存储库中来在其他项目中使用它。

mvn install:install-file  \   
-Dfile=../red-black/target/red-black-0.1.0.jar \
-DgroupId=self \
-DartifactId=red-black \
-Dversion=0.1.0 \
-Dpackaging=jar \
-DgeneratePom=true \
-DcreateChecksum=true \
-DlocalRepositoryPath=local_mvn_repo

疯狂的是,我添加了一个新函数,编译了我的jar并将其重新安装到另一个项目的本地maven存储库中,现在java找不到我的新函数

user=> (red-black.interval-tree/tree-to-flat-list )
CompilerException java.lang.RuntimeException: No such var: red-black.interval-tree/tree-to-flat-list, compiling (NO_SOURCE_PATH:1:1)

但是这个函数在red-black.interval-tree.clj中!我什至进入我的 local_mvn_repo,解压 jar,然后查看 Interval_tree.clj 源代码。函数就在那里!

更奇怪的是,该库中的其他函数是可以访问的。例如,在我使用本地 mvn 存储库的第二个项目中:

user=> (use 'red-black.interval-tree)
nil

现在来一点标签标签魔法:

user=> (red-black.interval-tree/
red-black.interval-tree/add-to-result red-black.interval-tree/black red-black.interval-tree/check-max-interval
red-black.interval-tree/get-color red-black.interval-tree/get-hash red-black.interval-tree/get-interval
red-black.interval-tree/get-key red-black.interval-tree/get-left red-black.interval-tree/get-max
red-black.interval-tree/get-parent red-black.interval-tree/get-right red-black.interval-tree/get-root
red-black.interval-tree/get-sentinel red-black.interval-tree/get-value red-black.interval-tree/has?
red-black.interval-tree/health-check red-black.interval-tree/high red-black.interval-tree/insert
red-black.interval-tree/insert-fixup red-black.interval-tree/left-rotate red-black.interval-tree/low
red-black.interval-tree/max-of-three red-black.interval-tree/new red-black.interval-tree/node
red-black.interval-tree/point-lookup red-black.interval-tree/pretty-print red-black.interval-tree/recursive-max
red-black.interval-tree/red red-black.interval-tree/right-rotate red-black.interval-tree/set-color
red-black.interval-tree/set-interval red-black.interval-tree/set-key red-black.interval-tree/set-left
red-black.interval-tree/set-max red-black.interval-tree/set-parent red-black.interval-tree/set-right
red-black.interval-tree/set-root red-black.interval-tree/set-value red-black.interval-tree/update-max
user=> (red-black.interval-tree/

但是正如您所看到的,树到平面列表的功能丢失了。当我返回红黑项目并启动 repl 时,我可以调用刚刚找到的项目。帮助!截至 5 小时前,我正在我的红黑项目中创建新方法,编译我的 uberjar 并通过本地 Maven 安装将其安装到我的其他项目中,并且新方法被很好地采用。好像有什么问题,请指教!

更新:

此问题的一个独立示例位于此 tarball 中:

http://gorillamatrix.com/files/foo.tar.gz

进入 foo-two 和 lein repl。尝试加载 foo-two.core,你应该看到这个:

user=> (use 'foo-two.core)
CompilerException java.lang.RuntimeException: No such var: foo-one.core/bar, compiling:(foo_two/core.clj:6:2)

但是 foo-one.core/bar 肯定是定义的!

最佳答案

如果它具有相同的版本(看起来),lein 不会将已经获取的(从 local_mvn_repo).jar 更新到 .m2/repositories 中,因此您仍在使用它获取的第一个(它将始终使用.m2 中的而不是 local_mvn_repo 中的)因此,您可以增加版本并重新安装(确保您还更新使用它的项目的project.clj中的版本)或(如果仍然使用相同的版本)只需从/.m2/repositories中删除它,以便lein可以获取再次(来自 local_mvn_repo)

关于maven - Leiningen使用相同版本号重新安装后不下载依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com