clojure - 是否可以在 deps.edn 中设置 `*warn-on-reflection*?
问题描述
使用leiningen
,可以在配置文件 [1] 中重新配置全局变量。*warn-on-reflection*
仅在测试等特殊阶段启用诸如整个模块之类的选项很方便。寻找与 Clojure CLI 相同的方法,我找不到明确的方法。查看各种命令,例如编译需要以下内容的 clojure 代码,clojure -M -e "(compile 'some.namespace)"
我可能不得不求助于类似的技巧。
作为记录,[2]等各种来源建议将其放在每个文件中,但这很麻烦。
[1] https://github.com/technomancy/leiningen/blob/6c8cdeebb07972f2a24b95bfc64b339c9895d3bc/sample.project.clj#L285-L290
[2] https://github.com/clj-easy/graal-docs#reflection
解决方案
在稍后找到这个其他 SO [1] 之后,似乎这样做的方法如下:
; deps.edn
{:aliases {:my-profile {:main-opts ["-e" "(set! *warn-on-reflection* true)"]}}}
-e command
如本测试所示,它被其他人正确接收:
clojure -Mmy-profile -e '(println "warn-on-reflection =" *warn-on-reflection*)'
; => warn-on-reflection = true
评论中报告的一个缺点是只能:main-opts
应用来自不同别名的一个选项 - 最后一个获胜。
对未来有一个希望:ask.clojure.org [2] 上的一个问题要求 JVM 选项。
我希望这将帮助其他像我一样努力进行转换的人。
[1]如何在 deps.edn 中设置 *print-length* 的默认值
[2] https://ask.clojure.org/index.php/3787/theres-enable-warn-reflection-from-command-running -clojure
推荐阅读
- amazon-web-services - 非法指令(核心转储)docker、red hat 7.7、aws ec2
- html - Flexbox 不工作 - 它似乎只适用于某些子元素?
- python - 如何从锚标签中抓取数据,该标签位于 selenium python 中的另一个锚标签内
- c++ - 使用混合结构元素类型将可迭代元素添加到结构
- docker - Docker Build 在编译缺少文件的 .NetCore 项目时不会中断 - 而是说“成功”
- swift - Swift 的写时复制线程安全吗?
- javascript - React 中组件默认导出/导入的问题
- python - Python:连续发送多于一封电子邮件时出错
- c# - UWP EqualizerEffectDefinition 没有负增益?
- windows - Localstack 503 服务不可用 - Windows 10 企业版