gpt4 book ai didi

clojure - 使用leiningen别名指定JVM标志

转载 作者:行者123 更新时间:2023-12-05 00:18:20 25 4
gpt4 key购买 nike

如何指定JVM标志,以便它们仅适用于project.clj文件中的一个别名?

具体来说,我想尝试Clojure 1.8.0中的built in server功能。

我可以使用uberjar和以下命令执行此操作:

java -Dclojure.server.interactive="{:port 8411 :accept srv.action/process}" -jar target\uberjar\srv-0.1.0-SNAPSHOT-standalone.jar

但是我希望可以从lein别名中设置 -D...
我试过了
:aliases {
"serve" [:jvm-opts ["-Dclojure.server.interactive={:port 8411 :accept srv.action/process}"] "run"]
}

但是我明白了
java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.String

是否有可能做到这一点?
我正在使用“在Java 1.8.0_92 Java HotSpot(TM)64位服务器VM上的Leiningen 2.6.1”

最佳答案

Leiningen profiles绝对是实现此目的的方法。您可以使用任何常用选项(在您的情况下为:jvm-opts)定义配置文件。在您的profile.clj中包含与以下内容类似的内容:

:profiles {:clj-server {:jvm-opts ["-Dclojure.server.interactive={:port 8411 :accept srv.action/process}"]}}

然后,您可以通过 with-profile告诉leiningen您希望使用此配置文件。
lein with-profile clj-server run

但是,这将仅使用新配置文件中指定的选项。如果除了默认配置文件(开发,测试等)之外还希望激活新配置文件,则需要在配置文件前添加 +
lein with-profile +clj-server run

如果您像我一样懒惰,则可以使用此新定义的配置文件定义别名以运行不同的任务:
:aliases {"clj-server-run" ["with-profile" "+clj-server" "run"]}

然后,就像调用 lein clj-server-run一样简单。

希望这会有所帮助。我真的建议您阅读所提供的leiningen文档以及该文档非常有用。

关于clojure - 使用leiningen别名指定JVM标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com