[英]Clojure and Java interop in a real world
我正在考慮開始使用(不玩)Clojure。 有沒有有用的指南? 我不是在詢問lein,javac或任何其他“小型”手動工具。 我需要知道如何在同一個項目中使用eclipse中的Java和Clojure源代碼。 如何在沒有編譯錯誤的情況下讓他們互相調用? 如何配置maven? 如何建立完全富有成效的開發環境? 現在甚至可能嗎? 哪些插件可能有用? 從哪兒開始?
我有一個完全正常的生產設置,包括Eclipse,Maven和Clojure,目前工作得非常好。 希望它有助於作為Java IDE中良好的多語言設置的一個例子。
我沒有使用leiningen - 根本沒有反對lein - 它在純粹的Clojure / CLI世界中非常漂亮和理想。 但是我發現使用IDE可以更好地使用純Maven在多語言Java + Clojure環境中工作,因為工具集成要好得多。 此外,從生態系統/受眾/社區的角度來看,如果您希望來自Java世界的人能夠構建您的源代碼,那么如果您直接使用Maven,則會減少混亂。
這是我的設置:
實際上我如何管理/設置項目本身:
src/main/java
和src/main/clojure
.clj
文件捆綁在任何jar中,並且可以在運行時動態加載/運行。 public static void main(...)
在Java端創建入口點,但很快調用Clojure代碼。 請參閱此博客文章,了解如何從Java調用Clojure 。 最后一些編碼提示多語言Java + Clojure
clojure.lang.IFn
。 這樣,您的Java對象就可以充當Clojure代碼中的第一類函數。 這是一個混合Java和Clojure源的示例項目:
我還寫了一個小型庫( clojure-utils ),其中包含一些用於從Java調用Clojure的示例代碼,您可能會發現它很有用。
盡管你對萊寧根有所了解,但我建議你去看看。 Leiningen支持Java編譯,因此在一個項目中組合java和clojure源不是問題。
Counterclockwise插件,Eclipse的clojure插件,可以與leiningen項目文件(project.clj)一起使用。 因此,在Eclipse中,您可以通過在project.clj中定義正確的內容來為您處理依賴關系管理和Java編譯,而無需單獨安裝leiningen或從命令行執行命令。
在project.clj中設置:java-source-paths ,例如:
:java-source-paths ["src/main/java"]
在包src / main / java中放一個類Foo:
package main.java;
public class Foo {
public static final String value = "Michiel";
}
在clojure源文件中的某處定義此函數,並在調用時打印“Michiel”:
(defn foo
"I don't do a whole lot."
[]
(println (main.Foo/value)))
進一步閱讀:
您也可以嘗試“Funky”框架。 它將完全分離你的Clojure和Java代碼。 只需看看https://github.com/windler/Funky
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.