다양한 선택권을 제공하는(..이라고 쓰고 ‘헷갈리는’ 이라고 읽는다) Clojure 실행방법과 그 사용 조건에 대해 정리해보겠다.



1.

lein run -m <네임스페이스>/<함수명>
  • 사용 조건

    • 없음

2.

lein run -m <네임스페이스>
  • 사용 조건

    • 해당 네임스페이스에 -main 함수 존재

3.

lein run
  • 사용 조건 1

    • project.clj에 메인 네임스페이스 및 함수 지정
  • 사용 조건 2

    • project.clj에 메인 네임스페이스 지정되어 있고,

    • 해당 네임스페이스에 -main 함수 존재

4.

lein uberjar
java -jar <생성된 jar 파일명>.jar
  • 사용 조건

    • project.clj에 메인 네임스페이스 지정되어 있고,

    • 해당 네임스페이스에 -main 함수 존재하고,

    • 해당 네임스페이스에 (:gen-class) 옵션 존재

5.

lein uberjar
java -cp <추가적인 class path or jar 파일>;<생성된 jar 파일명>.jar
  • 사용 조건

    • project.clj에 메인 네임스페이스 지정되어 있고,

    • 해당 네임스페이스에 -main 함수 존재하고,

    • 해당 네임스페이스에 (:gen-class) 옵션 존재하고,

    • 추가적인 class path 혹은 jar 파일 지정 필요시

자바 명령으로 실행하기 위해서는 (:gen-class) 옵션이 들어가야 한다는 것과 -main 함수만을 엔트리 함수로 사용할 수 있다는 것에 유의하자.


<테스트 환경> 
- OS : Windows 7 
- Leiningen 버전 : 1.0.0
,