2013-09-08 1 views
2

Leiningen (프로젝트 파일)을 통해 컴파일러 옵션 (최적화, 디버그 정보 생성 등)을 제어 할 수 있습니까?Clojure : Leiningen을 통해 컴파일 옵션 제어

javac은 Clojure 컴파일러에서 직접 발행 한 일부 지점 또는 JVM 코드에 포함됩니까? 나는 가능한 한 작고 빨리 uberjar를 만들고 싶다.

또 다른 중요한 질문은 jvm-options입니다. 저는 Java에 익숙하지 않지만, Leiningen (lein run 경유)에 의해 실행될 경우 uberjar가 JVM에 의해 직접 실행되고 옵션을 제어하기 때문에 의미가있는 것처럼 보입니다 : java -client <other options> -jar uberapp_uberjar.jar

Doc는 프로파일을 사용할 수 있다고 말합니다. 내 맥에서 ~/.lein/에서 프로필을 찾을 수 없습니다. show-profiles 명령이 있습니다. 프로필을 표시하는 명령이 있습니까?

+0

Clojure에 컴파일되지, 그것은 해석입니다. Clojure 컴파일러는 특정 경우에만 클래스를 생성합니다 (일반적으로 Java interop의 경우). – DaoWen

+1

DaoWen, 올바르지 않습니다. Clojure 코드는 JVM 바이트 코드로 컴파일됩니다. http://clojure.org/compilation – leonardoborges

답변

2

당신이 leiningen의 project.clj 파일에서 설정할 수있는 옵션의 전체 범위가 있습니다 및 자바 :

질문에 관해서는, 당신은 project.clj 파일에 leiningen하는 JVM 옵션을 전달할 수 있습니다 모든 종류의 옵션이 이것의 일부입니다.

나는 항상 GitHub의에서이 project.clj 샘플 파일을보고 무엇을 수 있습니다 볼 필요가

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

나는 그가 최신으로 유지로되어 상대적으로 좋은 믿습니다

+0

예, 감사합니다! '-g : none'을 추가 할 수 있습니다. 또한 일반적인 JVM 접근 방식을'pack200'과 ProGuard로 사용할 수 있습니다. – demi

0

댓글 DaoWen 게시가 잘못되었습니다.

Clojure 코드는 JVM 바이트 코드로 즉석에서 can be seen here으로 컴파일됩니다.

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

javac-options는 javac option 일 수 있습니다. 예를 들어

:

(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"]) 
+0

나는 그것을 알아 차렸다. 나는 javac-options [ "-g : none"]'과'debug : false'를 시도했지만, jar의 크기는 변하지 않았습니다. 이러한 옵션으로 새로운 프로파일'opt'를 추가하고'lein with-profile opt uberjar'. 여기에 그것을 지적 주셔서 감사합니다. – demi