mik*_*era 14
我有一个完全正常的生产设置,包括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的示例代码,您可能会发现它很有用.
Mic*_*ent 11
尽管你对莱宁根有所了解,但我建议你去看看.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"]
Run Code Online (Sandbox Code Playgroud)
在包src/main/java中放一个类Foo:
package main.java;
public class Foo {
public static final String value = "Michiel";
}
Run Code Online (Sandbox Code Playgroud)
在clojure源文件中的某处定义此函数,并在调用时打印"Michiel":
(defn foo
"I don't do a whole lot."
[]
(println (main.Foo/value)))
Run Code Online (Sandbox Code Playgroud)
进一步阅读:
归档时间: |
|
查看次数: |
5518 次 |
最近记录: |