Leiningen编译顺序? [英] Leiningen compilation order?
问题描述
我只是学习如何 lein
,我想从Java源使用
a类由 deftype
在Clojure源。这不包括在基本的
教程,我不能让它正常工作。
I'm just learning how to lein
, and I'd like to use from a Java source
a class created by deftype
in a Clojure source. This wasn't covered in the basic
tutorial and I can't get it to work properly.
问题是Java源不能导入Clojure类,因为它还没有编译
。和Clojure类不编译,因为编译是中止的
由Java源。
The problem is that Java source can't import Clojure class, since it hasn't been compiled yet. And Clojure class isn't compiled, since compilation is aborted by the Java source.
我给一个最小的例子:
-
使用以下项目创建新项目:
Create a new project with:
lein new app javafoo
添加到 project.clj
:aot :all
:java-source-paths ["src/java"]
插入 src / javafoo / core.clj
:
Put into src/javafoo/core.clj
:
(ns javafoo.core)
(deftype PPoint [x y])
放入 src / java / JavaFoo.java
:
package foo.java;
import javafoo.core.PPoint;
public class JavaFoo {
public static void main(String[] args) {
System.out.println("JavaFoo");
}
}
尝试编译
Try to compile
lein compile
它不能通过包javafoo.core不存在
。
现在我必须
It fails with package javafoo.core doesn't exist
.
So now I have to
- 注释
:java-source-paths
- 编译
- 取消注释
:java-source-paths
- 编译
- Comment out
:java-source-paths
- Compile
- Uncomment
:java-source-paths
- Compile
有没有办法让它从一开始就工作?
It finally works. Is there a way to make it work from the start?
推荐答案
将这一行添加到您的项目。 clj
:
:prep-tasks [["compile" "javafoo.core"] "javac"]
这篇关于Leiningen编译顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!