2024 Clojure 使用状态调查! 中分享您的看法。

欢迎!请参阅 关于 页面获取更多关于该功能的信息。

+1
Clojure
已关闭

Java 有一种方法可以快速从命令行获取版本信息
java -version

为 `cli` 和 `clojure` 命令是否有类似的方法?如果没有,如果这些命令有类似的功能,那将非常有帮助,最好是打印出 Clojure 版本和 Java 版本,这样用户可以快速确定已安装和正在运行的内容。

已关闭,备注: 在 Clojure CLI 1.10.2.790 中发布

2 答案

+1

选择
 
最佳答案

Clojure CLI 1.10.2.790 现在支持 -version 和 --version 选项(与 Java 的意思相同)。

本报告Clojure CLI版本。它不报告Java版本,请使用java来执行此操作。

太好了!谢谢,Alex。
0

这里的“Clojure”是重载的(我甚至不确定你问的是哪个)——有Clojure命令行工具和你当前使用的Clojure语言jar的版本。它们是独立的,任何工具版本都可以与任何Clojure版本一起使用(例如,Clojure 1.10.2.774工具可以使用Clojure 1.0,或者Clojure 1.9.x工具可以使用Clojure 1.10.2)。

您可以使用clj -h(第一行)或clj -Sdescribe查看工具的版本。

您可以使用clj -M -e "*clojure-version*"查看您当前使用的Clojure版本。

由于对确切要做什么的混淆,我尚未决定对此如何处理。:)

我想我可以通过说Clojure工具可能运行两个进程来进一步造成混淆——第一个用于计算类路径,该路径将使用与工具前缀版本匹配的Clojure版本,第二个是您要运行的任何程序,即您告诉它使用的任何程序。
哎呀,明白了。我特别想到的是报告Clojure版本(例如,1.10.2.774),而不是特别“clojure”命令行工具,虽然我认为这两个是(至少是半)相关的。我想我要求的是一个尽可能容易回答的问题:“我在运行什么?”是的,我知道我可以执行“cli -M -e "*clojure-version*"”,但这确实很冗长。似乎命令行工具应该只有一个“--version”选项。
by
您也可以通过系统属性获取JVM版本

$ clojure -M -e '(println "Java" (System/getProperty "java.version") "Clojure" (clojure-version))'
Java 15 Clojure 1.10.2

评估(System/getProperties)将返回一个包含有关程序在运行的环境中的有趣信息的哈希表。
by
我想我可以通过说Clojure工具可能运行两个进程来进一步造成混淆——第一个进程用于计算类路径,该进程将使用与工具前缀版本匹配的Clojure版本,第二个进程是你正在运行的任何程序,也就是你要求它使用的内容。

好的,很有意思。
by
@sean,是的,我知道所有这些信息都存在,我没有建议没有可用的版本信息。它都存在,我只是想找到一个方便将其输出的东西,而不需要冗长的咒语。
by
“我特别想到的是报告Clojure版本(例如,1.10.2.774),而不是特别“clojure”命令行工具”——1.10.2.774是CLI版本,而不是Clojure版本。

运行 clj -h 命令会显示 CLI 版本作为第一行(或 clojure -h)。

但是 Clojure 版本是在您的项目 deps.edn 文件中设置,或者在您的用户 deps.edn 文件中设置,否则默认为系统 deps.edn 文件。

clj/clojure 命令可以运行任何 Clojure (语言) 版本 —— 在我用户的 deps.edn 文件中,有从 Clojure 1.0 到 Clojure 1.10.2 的别名(以及现在的“master”,即 Clojure 1.11)。

这有帮助吗?还是更令人困惑?
by
Dave Roberts 写道:“我特别想到要报告 Clojure 版本(例如,1.10.2.774),而不特别是指 `clojure` 命令行工具,尽管我认为这两个是有(至少半)关联的。”

注意,1.10.2.774 确实是 `clojure` 命令行工具的版本号。Clojure 语言没有这样的版本号。在 JVM 上的 Clojure 语言版本号如 1.9.0、1.10.0、1.10.2 等,但不是 1.10.2.774。
...