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

欢迎!请参阅 关于 页面了解更多有关此如何工作的信息。

+1
Clojure
已关闭

Java 可以通过命令行快速查找版本
java -version

对于 `cli` 和 `clojure` 命令,有没有类似的方法?如果没有,如果这些命令能够打印出 Clojure 版本和 Java 版本,这将非常 helpful,用户可以快速确定已安装和正在运行的内容。

关闭时备注: 在 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`选项。
Sean Corfield
您还可以通过系统属性获取JVM版本

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

评估(System/getProperties)将返回一个满载着有关程序运行环境的有趣信息的哈希表。
Dave Roberts
我想再添一些混乱,说Clojure工具可能会运行两个进程——第一个用于计算类路径,这将使用与工具前缀版本匹配的Clojure版本,第二个则是您正在运行的任何程序,也就是您指定的程序。

好吧,这是个好主意。
Dave Roberts
@sean,是的,我知道这些都存在,我并不是建议没有版本信息可用。一切都在某处。我只是寻找一些方便地输出它,而不是冗长的咒语。
Sean Corfield
"我具体在想报告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 语言没有这样的版本号。Clojure 语言在 JVM 上的版本号像 1.9.0,1.10.0,1.10.2 等等,但没有 1.10.2.774。
...