在《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`选项。
您也可以通过系统属性获取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会显示命令行界面版本作为第一行(或clojure -h)。

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

clj/clojure命令可以运行任意Clojure版本 -- 在我的用户deps.edn文件中我有从Clojure 1.0到Clojure 1.10.2的所有别名,甚至也包括现在作为Clojure 1.11的“master”。

这有帮助吗?还是更让人困惑了?
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。
...