Cá nhân, tôi sẽ tránh xa việc sử dụng Maven trực tiếp mặc dù là câu trả lời được chấp nhận.Đây là định nghĩa dự án Leiningen đơn giản:
- tạo nguồn Java từ ngữ pháp ANTLR4 (làm tiền thưởng);
- biên dịch các nguồn Java;
- biên dịch nguồn Scala (Tôi thích sử dụng Scala trên đầu trang của mã Java ANTLR4 được tạo vì nó ngắn gọn và dễ chịu hơn để làm việc);
- tiếp tục với nội dung của 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"])
Để sử dụng ANTLR4 Plugin tải về và 'Lein cài đặt' plugin lein-antlr4. Nếu bạn không cần nó, chỉ cần loại bỏ các dòng có liên quan từ định nghĩa dự án.
Để sử dụng Scala plugin tôi cần thiết để download nó và thay đổi
[org.scala-lang/scala-compiler "2.9.1"]
để
[org.scala-lang/scala-compiler "2.10.1"]
trong project.clj plugin, sau đó 'Lein cài đặt' nó tại địa phương. Với phiên bản phụ thuộc cũ hơn, tôi đã nhận được
java.lang.Error: typeConstructor inapplicable for <none>
từ trình biên dịch Scala.
Để giảm boilerplate, tôi không biết bất kỳ thư viện hiện có nào. Nhưng giữa các macro Clojure và các chuyển đổi tiềm ẩn của Scala, bạn có thể đi một chặng đường dài. – leedm777
Đừng hỏi nhiều câu hỏi trong một câu hỏi. Đó là không công bằng đối với những người có thể trả lời một phần nhưng không phải là khác, và câu trả lời chấp nhận có thể không phải là câu trả lời tốt nhất cho một khía cạnh. –
@ DanielC.Sobral Nói chung, tôi đang cố tránh tình huống đó. Vì lý do đó tôi đã viết dòng cuối cùng. Các câu hỏi trong nội dung mô tả những gì tôi muốn thấy trong hướng dẫn đó (tôi đã mong đợi liên kết đến một số bài đăng hoặc bất kỳ bài đăng nào). –