对于lein项目,为什么lib/in .gitignore?

dan*_*dan 5 clojure leiningen

我对Clojure和Java比较陌生.为什么lein项目中的lib文件夹没有添加到lein项目的git repo中?我认为将所有必要的罐子放在那里进行分布式开发会很方便.

cli*_*zin 4

在 Leiningen 项目中,project.clj 文件规定了项目的依赖项,当您运行“lein deps”时,project.clj 文件中列出的所有依赖项都会下载到 lib/。因此,无需签入 jar,因为 project.clj 与 'lein deps' 命令相结合就足以让其他人重现与您拥有的相同的 lib/ 。检查所有罐子是多余的并且浪费空间。

此外,正如 mblinn 指出的那样,最好从专为分发和更新依赖项而设计的工件存储库中提取 jar,而不是在依赖项更新时不断更改和提交新 jar。当您的项目依赖于经常更改的快照 jar 时尤其如此;如果您签入了 jar,则每次更新快照时都必须签入新的 jar,但如果您依靠“lein deps”从工件存储库中提取 jar,那么您将保持最新状态,而无需努力。但即使对于非快照 jar,通过更改 project.clj 中的版本然后运行“lein deps”来更新依赖项也比手动将 jar 放入 lib/ 并签入要容易和快捷得多。

我希望上述解释是可以理解的。如果没有,并且您不理解所讨论的一些概念,例如工件存储库或依赖项,请告诉我,我会解释。