2

我可以通过 Leiningen(项目文件)控制编译器选项(优化、调试信息的生成等)吗?

javacClojure 编译器直接发出的某个点或 JVM 代码是否涉及?我想让我的 uberjar 尽可能小和快。

另一个很接近的问题是jvm-options。我不熟悉 Java,但似乎它们在 Leiningen (via lein run) 运行的情况下是有意义的,因为 uberjar 直接由 JVM 执行并且我控制它的选项:java -client <other options> -jar uberapp_uberjar.jar

医生说我可以使用个人资料。在我的 Mac 上,我在~/.lein/. 有show-profiles命令,有显示配置文件的命令吗?

4

3 回答 3

2

:javac-options 可以采用任何javac 选项

例如:

(defproject com.example.foo/bar "0.1.0-SNAPSHOT"
:description
"Some awesome app."

:url "http://www.example.com"
:license {:name "" :url ""}
:dependencies [[org.clojure/clojure "1.5.1"]
               [org.clojure/clojure-contrib "1.2.0"]]

:aot [com.example.foo.core]
:main com.example.foo.core
:target-dir "target/"
:source-paths ["src"]
:compile-path "target/classes"
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options" "-g"])
于 2013-09-08T15:13:04.417 回答
2

您可以在 leiningen project.clj 文件中设置一系列选项,各种 java 选项都是其中的一部分。

当我需要查看可能的情况时,我总是查看 github 上的这个 project.clj 示例文件

https://github.com/technomancy/leiningen/blob/master/sample.project.clj

我相信他一直比较擅长保持最新状态

于 2013-09-08T12:47:52.970 回答
0

道文发表的评论不正确。

Clojure 代码被动态编译成 JVM 字节码,如下所示

至于您的问题,您可以在 project.clj 文件中将 JVM 选项传递给 leiningen:

(defproject example "0.0.1"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.5.1"]
  :jvm-opts ["-javaagent:newrelic/newrelic.jar"]})
于 2013-09-08T09:12:48.703 回答