Лично я бы держался подальше от использования 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 установить' lein-antlr4 плагин. Если вам это не нужно, просто удалите соответствующие строки из определения проекта.
Чтобы использовать Scala плагин мне нужно download и изменить
[org.scala-lang/scala-compiler "2.9.1"]
в
[org.scala-lang/scala-compiler "2.10.1"]
в project.clj плагина, затем 'Lein установить' локально. С более старой версией зависимостей я получал
java.lang.Error: typeConstructor inapplicable for <none>
от компилятора Scala.
Для уменьшения шаблона, я не знаю каких-либо существующих библиотек. Но между макросами Clojure и неявными преобразованиями Scala вы, вероятно, можете пройти долгий путь. – leedm777
Не задавайте более одного вопроса по одному вопросу. Это несправедливо по отношению к людям, которые могут ответить частично, а не другим, и принятый ответ может быть не лучшим ответом для одного аспекта. –
@ DanielC.Sobral Вообще-то я стараюсь избегать этой ситуации. По этой причине я написал последнюю строку. Вопросы в теле описывают то, что я хочу видеть в этом руководстве (я ожидал ссылку на какую-то должность или что-то еще). –