Kev*_*vin 15 clojure leiningen
我希望有两个主要类(或更多)与leiningen,然后能够在java命令行中选择哪一个.例如,我有:
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
Run Code Online (Sandbox Code Playgroud)
使用project.clj:
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:main abc)
Run Code Online (Sandbox Code Playgroud)
然后我构建lein uberjar,并运行:
java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
Run Code Online (Sandbox Code Playgroud)
我得到它,当我:main abc在project.clj中指定它是作为清单中的主类调用它,但我不能让它运行而不放东西.但无论哪种方式,当我尝试运行'def'主要时,我得到一个未找到的类:
Exception in thread "main" java.lang.NoClassDefFoundError: def
Run Code Online (Sandbox Code Playgroud)
小智 14
这至少适用于leiningen 2.0+
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:profiles {:main-a {:main abc}
{:main-b {:main def}}
:aliases {"main-a" ["with-profile" "main-a" "run"]
"main-b" ["with-profile" "main-b" "run"]})
Run Code Online (Sandbox Code Playgroud)
然后你可以这样运行每个主要:
lein main-a
lein main-b
Run Code Online (Sandbox Code Playgroud)
其中扩展到:
lein with-profile main-a run
lein with-profile main-b run
Run Code Online (Sandbox Code Playgroud)
我在我的一个项目中使用它,它完美无缺.
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |