Ken, I'm sorry I didn't answer quickly to you on the CCW mailing list.

Unless there's a bug involved (and I suspect there's a rampant one
somewhere :) ), CCW handles AOT compilation.
Would it not handle it, I would not be able to release CCW itself !

Indeed, currently there are cyclic dependencies between java and
clojure code in CCW, and this is handled by Eclipse's Compiler only :
Eclipse compiles java files to (incompletely working) class files.
The CCW builder builds the missing AOT class files (thanks to
Eclipse's compiler having put the necessary signatures in place in the
java class files, even if the implementations are not complete yet).
After the CCW build, Eclipse refreshes the project and does a second
compile pass on its java files, ending the roundtrip with everything
being OK.

Sooo... how does CCW handle AOT compilation ?
Here's the current state of the art. It's subject to laarge
improvements, but I haven't opened this can of worms yet, I'm working
on other more urgent CCW topics.

So there it is :
a) Select your project's node in the Package Explorer
b) Trigger its contextual menu, select "Run as", select "Clojure Application"
I *insist* (*) : you must trigger the Run from the project's node.
Only with the project's node will the incremental compilation be
activated for the started process' JVM.
Then you should see:
1) A java console view for the underlying process' JVM inputs/outputs
2) A (n)REPL client view speaking with the underlying process' JVM via
either the nrepl dependency already present in your project's
classpath, either added "on the fly" to the classpath by the "Clojure
Application" launch configuration machinery (a clever ccw trick)
3) a "background" user job running (generally on the bottom right)
reporting some kind of progress related to the AOT compilation of the
project.
4) when the background user job has finished, you should see that your
project's "classes/" directory is full of AOT compiled class files.

Currently, there's one drawback : CCW does not refrain AOT compilation
from "compiling too much things", nor does it remove AOT compilation
artifacts that should generally not be desired (e.g. anything in
packages not being related to the project's own namespaces).

So now that you have the explanations, if this works for you as it
does for me, Eclipse+CCW will handle for you, out of the box:

1) Must handle Clojure namespaces that are AOT-compiled.
3) Must handle Java source code files.
4) Must handle dependencies in the form of on-disk jar files (not in
any repository)
5) No XML configuration files.


(*) : In contrast, if you trigger a run of "Clojure Application" from
the contextual menu of a specific clojure lib file, the process will
not be started in "project mode", but in "file mode". Which implies
that CCW will just pre-load the selected file on the clojure process,
but do none of what it does when run in "project mode" : neither
attempt to AOT compile the whole project when the process starts,
neither attempt to (again) re-AOT compile the whole project everytime
you save a file in the editor.

HTH,

Cheers,

-- 
Laurent

2011/7/3 Konrad Hinsen <konrad.hin...@fastmail.net>:
> I am looking for a build tool that fulfills the following requirements:
>
> 1) Must handle Clojure namespaces that are AOT-compiled.
> 2) Must handle Clojure namespaces that are not AOT-compiled.
> 3) Must handle Java source code files.
> 4) Must handle dependencies in the form of on-disk jar files (not in any
> repository)
> 5) No XML configuration files.
>
> Candidates that I have tried and found insufficient include
> - Leiningen (no dependencies without repositories)
> - Cake (doesn't handle Java source files)
> - Eclipse/Counterclockwise (doesn't handle AOT compilation)
> - ant, maven: XML configuration files
> - scons: incomplete Java support, no Clojure support
>
> Is there anything else worth trying?
>
> Thanks in advance,
>  Konrad.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to