Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何在project.clj中引用环境变量或home dir_Clojure_Leiningen - Fatal编程技术网

Clojure 如何在project.clj中引用环境变量或home dir

Clojure 如何在project.clj中引用环境变量或home dir,clojure,leiningen,Clojure,Leiningen,有没有办法通过编程将我的主目录的名称插入到Leiningen的project.clj中的文件路径中 我在不同的机器上运行一个Leiningen项目,在那里我有不同的主目录。该项目使用的jar文件不是由Maven管理的;我下载它们并将它们放在一个与我的主目录相对的目录中,或者将它们复制到Leiningen项目中。第二种选择可行,但并不可取 使用第一个选项(将jar文件保存在其他地方)的一种简单方法是在我的Leiningen目录中添加到“其他地方”目录的软链接。这是可行的,但是每台机器上的链接必须不

有没有办法通过编程将我的主目录的名称插入到Leiningen的project.clj中的文件路径中

我在不同的机器上运行一个Leiningen项目,在那里我有不同的主目录。该项目使用的jar文件不是由Maven管理的;我下载它们并将它们放在一个与我的主目录相对的目录中,或者将它们复制到Leiningen项目中。第二种选择可行,但并不可取

使用第一个选项(将jar文件保存在其他地方)的一种简单方法是在我的Leiningen目录中添加到“其他地方”目录的软链接。这是可行的,但是每台机器上的链接必须不同,所以我不能将链接文件包含在git存储库中,我更愿意将所有内容都包含在git repo中

在我的project.clj文件中,是否有使用环境变量或以其他方式引用我的主目录的方法?到目前为止,我已经仔细研究了这个问题,还没有找到解决办法

我想我可以在运行时构造路径字符串——毕竟,project.clj中的只是Clojure代码。由于将我的主目录硬编码到project.clj中不会出现任何问题:

  :resource-paths [/Users/myhomedir/dist/mason/jar/mason.19.jar")]
我想我可以做到:

:resource-paths [(str (System/getenv "HOME") "/dist/mason/jar/mason.19.jar")]
然而,莱宁根一点也不喜欢这样:

java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: clojure.lang.PersistentList
[…]
更改为
(vector…
会产生相同的错误,但结尾带有“clojure.lang.Symbol”。

以您的名义,最好将jar安装在本地maven存储库中,并将其添加到项目中。clj
:dependencies
,以便从那里获取它。但你说过那些罐子不会由maven管理,所以我们来:

defproject
是一个宏,它允许使用取消引用进行任意计算。它通过调用内部fn来实现。因此,您可以执行以下操作:

:resource-paths [~(str (System/getenv "HOME") "/dist/mason/jar/mason.19.jar")]

谢谢你的链接。我会考虑为未来的图书馆朝那个方向迈进。目前,
unquote项目
解决方案非常有用,因此我非常感谢。