gpt4 book ai didi

clojure - 确定 Clojure Jar 路径

转载 作者:行者123 更新时间:2023-12-04 10:28:12 25 4
gpt4 key购买 nike

这个问题的重点是消除对 Clojure project.clj 依赖项以及如何指定本地依赖项的混淆。

我在一棵树上有一堆 Clojure lein 项目

./projects/clojure/bene-csv # A csv parsing library
./projects/clojure/bene-cmp # A main program that depends on bene-csv

我正在编辑 bene-cmp 的 project.clj 文件。我想依赖
./projects/clojure/bene-csv/bene-csv-1.0.0-SN.jar 。

我是否使用简单的目录符号来指定路径或其他内容

谢谢你。

编辑:

我可以通过在 bene-csv 项目目录中输入 lein install 并在 bene-cmp 的项目目录的 project.clj 文件中使用这些 project.clj 条目,将 bene-csv 包含在我的项目中:
(defproject bene-cmp "1.0.0-SN"
:description "This is the main benetrak/GIC comparison program."
:dependencies [[org.clojure/clojure "1.3.0"]
[clojure-csv/clojure-csv "1.3.2"]
[bene-csv "1.0.0-SN"]])

但是,我仍在尝试弄清楚路径是什么,并希望得到任何指示或帮助。谢谢你。

最佳答案

Leinigen 在幕后使用 maven 依赖管理,因此所有依赖都安装在

${HOME}/.m2/repository/${groupId-as-path}/${artifactId}/$[version}/${artifactId}-${version}.jar

在哪里 [org.clojure/clojure "1.3.0"] groupId 是 org.clojure , artifactId 是 clojure和版本是 1.3.0 . groupIds 转换为路径,因此 groupId 为 org.clojure有一个路径 org/clojure .

在 pom.xml 中指定的 maven 依赖项中,这看起来像:

<project>

...

<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>

...

</project>

注 - 如果未指定 groupId,则 leiningen 对 groupId 和 artifactId 使用相同的值。

使用 maven 依赖管理的好处是它为你处理传递依赖,即。如果您指定对某事的依赖,您将获得它所依赖的所有事物以及这些事物所依赖的所有事物等等。

因此,要依赖本地项目,正确的做法是将本地项目安装在本地存储库中。

为了节省您在开发阶段无休止地更改版本,maven 支持 SNAPSHOT 依赖项,其中一些额外的信息被附加到版本(基本上是日期时间)并且 maven 知道,例如 1.3.1-SNAPSHOT 它应该寻找最新的该快照的版本。这是由 {version}-SNAPSHOT 的命名约定触发的。

您可以在 maven 中使用硬编码路径指定系统依赖项,但通常这是不好的做法 - 它通常用于依赖于平台的事物,即可能具有 native 库组件。

默认搜索 maven 中央存储库,leinigen 添加 the clojars repository ,作为 clojure jars 的中央仓库。

leinigen 在幕后使用这些东西并构建一个类路径,引用您本地 maven 存储库中的 jar。

请注意,您可以生成 pom.xml来自 lein pom 的 leinigen 项目.然后你可以从那里驱动 maven。一个有用的功能是
mvn dependency:tree

它给出了所有依赖项的 ascii 艺术表示。

关于clojure - 确定 Clojure Jar 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707413/

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