Лично я бы держался подальше от использования Maven, несмотря на то, что был принят. Вот простое определение проекта Leiningen, которое:
- генерирует источники Java из грамматики ANTLR4 (в качестве бонуса);
- компилирует исходники Java;
- компилирует исходники Scala (я предпочитаю использовать Scala поверх сгенерированного Java-кода ANTLR4, так как с ним гораздо лаконичнее и приятнее работать);
- продолжается с Clojure.
(defproject polyglot "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:plugins [[lein-antlr4 "0.1.0-SNAPSHOT"]
[lein-scalac "0.1.0"]]
:dependencies [[org.clojure/clojure "1.5.1"]
[org.antlr/antlr4 "4.0"]
[org.scala-lang/scala-library "2.10.1"]]
:warn-on-reflection true
:antlr4-source-paths ["antlr4"]
:antlr4-options {:package "parser" :listener true}
:antlr4-compile-path "target/antlr4/parser"
:java-source-paths ["target/antlr4/parser" "src/java"]
:scala-source-path "src/scala"
:prep-tasks ["antlr4" "javac" "scalac" "compile"])
Чтобы использовать плагин ANTLR4, загрузите и 'lein install' плагин lein-antlr4 . Если вам это не нужно, просто удалите соответствующие строки из определения проекта.
Чтобы использовать плагин Scala, мне нужно было скачать его и изменить
[org.scala-lang/scala-compiler "2.9.1"]
до
[org.scala-lang/scala-compiler "2.10.1"]
в файле project.clj плагина, затем 'lein install' локально. С более старой версией зависимости я получал
java.lang.Error: typeConstructor inapplicable for <none>
от компилятора Scala.