请在 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 命令显示 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。
...