请在2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面获取更多关于本站如何运作的信息。

+7投票
Clojure

基于Slack(以及其他地方)上的讨论,自动加载user.clj似乎是一只“脚枪”,经常会让人绊倒,所以当运行Clojure进程时,似乎有一个选项来禁用它会很不错。

就在今天,有人测试了Clojure 1.12 Alpha 2的add-lib功能,但它没有工作,因为他们有一个打印消息的user.clj,新的invoke-tool API不喜欢user.clj出现的额外输出。

1个回答

0投票

我想更多地了解实际的问题

这是我最终创建这个提问的具体Slack线程

https://clojurians.slack.com/archives/C03RZGPG3/p1681479315972099

但我已经看到很多人在运行过程中遇到了一些问题,这些问题往往是难以调试的,因为自动加载user.clj而导致的。这里是另一个线程

https://clojurians.slack.com/archives/C053AK3F9/p1678794628860199

我猜每个月或每两个月在 Slack 上看到一次有人在使用它时遇到了意外情况(我刚刚回溯到去年中旬)。有时候他们在 src 下有 user.clj 的意图,打算在其中放置特定的开发相关工具,但在尝试运行他们的程序时,它会加载,更糟糕的是,被嵌入到一个应用程序 JAR 文件中,在非开发环境下运行——因为这并不是很清楚将其放置在类似 dev/user.clj 的位置并使用别名(或 Leiningen 的配置文件)以确保只在需要时加载的做法。

我的想法是可能会通过一个 JVM 属性来禁用这种自动加载,这样会让调试这些情况更容易,并提供一种确保意外打包到第三方库中的用户.clj 不破坏你的应用程序的方法。
...