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

欢迎!请查看 关于 页面以获取更多关于如何使用本网站的信息。

+1
Clojure
已关闭

Java 有一种从命令行快速查找版本的方法
java -version

对于 cliclojure 命令,有没有类似的方法?如果没有,如果这些命令有类似的方法会很好,最好是打印出 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会显示作为第一行的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)的每一版都创建了别名。

这能满足需求吗?还是让事情变得更复杂了?
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。
...