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命令获取Java版本。

太好了!谢谢,Alex。

"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`选项。
你还可以通过系统属性获取JVM版本。

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

计算(System/getProperties)将返回一个包含有关程序在运行的环境中的有趣信息的哈希表。
我想我可以进一步混淆这个话题,比如说Clojure工具可能运行两个进程——第一个用于计算类路径,它将使用与工具前缀版本匹配的Clojure版本,第二个是您要运行的任何程序,这也是您告诉它使用的内容。

嗯,这是一个好点子。
@sean,是的,我知道所有这些内容,我不是在说没有版本信息可用。这些信息都有地方可以找到。我只是想找到一个可以方便地输出的东西,而无需冗长的咒语。
“我具体是想报告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。
...