Clojure:通过Leiningen控制编译选项

Clojure:通过Leiningen控制编译选项,clojure,leiningen,Clojure,Leiningen,我可以通过Leiningen(项目文件)控制编译器选项(优化、生成调试信息等)吗 javac是在某个点上涉及的还是由Clojure编译器直接发出的JVM代码?我想让我的uberjar尽可能小和快 另一个悬而未决的问题是jvm选项。我不熟悉Java,但在Leiningen运行的情况下(通过lein run),它们似乎是有意义的,因为uberjar直接由JVM执行,我控制它的选项:Java-client-jar uberapp\u uberjar.jar 医生说我可以使用个人资料。在我的mac电脑上

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

javac
是在某个点上涉及的还是由Clojure编译器直接发出的JVM代码?我想让我的uberjar尽可能小和快

另一个悬而未决的问题是
jvm选项
。我不熟悉Java,但在Leiningen运行的情况下(通过
lein run
),它们似乎是有意义的,因为uberjar直接由JVM执行,我控制它的选项:
Java-client-jar uberapp\u uberjar.jar


医生说我可以使用个人资料。在我的mac电脑上,我在
~/.lein/
中找不到配置文件字段。有显示配置文件的
命令,有显示配置文件的命令吗

道文发表的评论不正确

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"]})

道文发表的评论是不正确的

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"]})

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

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


我相信他在保持最新方面做得比较好

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

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


我相信他在保持最新方面做得比较好

: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"])

: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"])

Clojure不是编译的,而是解释的。Clojure编译器只在特定情况下生成类(通常用于Java互操作)。DaoWen,这是错误的。Clojure代码被编译成JVM字节码:Clojure不是编译的,而是解释的。Clojure编译器只在特定情况下生成类(通常用于Java互操作)。DaoWen,这是错误的。Clojure代码被编译成JVM字节码:是的,谢谢!我可以添加
-g:none
。我还可以使用一般的JVM方法,如
pack200
和ProGuard。是的,谢谢!我可以添加
-g:none
。我还可以使用一般的JVM方法,如
pack200
和ProGuard。我尝试了
:javac选项[“-g:none”]
debug:false
,但我的jar大小没有改变-我用这些选项添加了新的配置文件
opt
,并用配置文件opt-uberjar运行命令
lein
。谢谢你在这里指出。我注意到了。我尝试了
:javac选项[“-g:none”]
debug:false
,但我的jar大小没有改变-我用这些选项添加了新的配置文件
opt
,并用配置文件opt-uberjar运行命令
lein
。谢谢你在这里指出。