2012-09-23 19 views
8

Tôi hơi ngạc nhiên với số lượng bài viết/blog/câu hỏi/câu trả lời tuyệt đối về Clojure đề cập đến Maven. Trong khoảng mười năm làm việc như một nhà phát triển Java, làm việc trên cả ứng dụng dành cho máy tính để bàn và ứng dụng web, tôi chưa bao giờ sử dụng Maven một lần (thường - và đó là ý kiến ​​cá nhân nhưng tôi biết một số người cũng nghĩ như vậy-- các dự án tôi đã thấy bằng cách sử dụng Maven, bao gồm "bồn rửa nhà bếp" trong khi những cái được xây dựng với quy trình xây dựng "được kiểm soát" hơn, cách "sạch" hơn và sản xuất các lọ nhỏ hơn, thời gian xây dựng nhanh hơn, v.v ...).Maven có phải là bắt buộc đối với Clojure trên JVM không?

Maven có yêu cầu khi bạn muốn xây dựng ứng dụng Clojure không?

Maven có bắt buộc khi bạn muốn sử dụng Leiningen không? Ví dụ, tôi có thể thêm các lọ bên ngoài như phụ thuộc vào một dự án leiningen "thủ công", mà không cần Maven?

Tôi nghĩ câu hỏi của tôi tóm tắt điều này: bạn có thể, trong thế giới Clojure/JVM không cần sử dụng Maven, giống như bạn có thể xây dựng, thử nghiệm, gói và gửi cả máy tính để bàn Java, ứng dụng web và ứng dụng Android mà không bao giờ cần Maven?

Trả lời

14

Câu trả lời ngắn: Không. Clojure chỉ là một cái bình và bạn có thể sử dụng nó như "nguyên bản" tùy thích, giống như bất kỳ thư viện Java nào khác.

Câu trả lời dài hơn: Maven không phải là yêu cầu, nhưng công cụ xung quanh Clojure, đặc biệt là Leiningen, có liên kết Maven cao nên cuộc sống của bạn sẽ dễ dàng hơn nếu bạn chỉ gửi ý muốn của Maven. Nhưng, với một công việc nhỏ, nó không phải là khó để có được cùng mà không có Maven. Tại nơi làm việc, tôi sử dụng kết hợp giữa Leiningen và cơ sở hạ tầng xây dựng dựa trên Ant/Ivy hiện có của chúng tôi. Tôi sử dụng Ant để giải quyết các phụ thuộc (từ repo nội bộ được quản lý của chúng tôi) và sau đó sử dụng một hack của Leiningen's :resource-paths để có được nó để lấy các lọ không Maven. Tại một số điểm, tôi sẽ làm một plugin thực sự để làm công cụ này, nhưng nó đã làm việc tốt cho tôi cho đến nay.

Ngoài ra, nếu bạn là người Eclipse và sử dụng CounterClockwise, bạn có thể coi dự án của bạn giống như bất kỳ dự án Java nào khác trong Eclipse, quản lý đường dẫn lớp theo cách thủ công. Nó chỉ xảy ra rằng bạn đã có một số mã Clojure trong đó là tốt. Tất nhiên, nhược điểm trong cả hai cách tiếp cận là nếu bạn muốn lấy một cái gì đó có sẵn từ trung tâm Maven hoặc Clojars, bạn sẽ phải thiết lập một số loại gương cho cơ sở hạ tầng của bạn, hoặc kéo xuống một cách thủ công phụ thuộc transitive và thêm chúng vào dự án của bạn.

+3

Leiningen sử dụng maven dưới mui xe, và hầu hết thời gian bạn không phải biết hoặc quan tâm rằng nó ở đó. – Bill

+0

yep, nhưng nó giả định hiện vật là trong một repo maven. –

+0

Đó là lý do tại sao tôi nói hầu hết thời gian. :-) Ngoài ra, btw, có một upvote. – Bill

6

Bạn không phải sử dụng maven, hoặc leiningen, cho vấn đề đó. Bạn có thể chạy REPL clojure với

java -jar clojure-1.3.0.jar 

và nó sẽ hoạt động tốt. Tôi biết bạn đến từ đâu, bởi vì một năm trước, tôi đã ở cùng một chiếc thuyền với bạn. không bao giờ được sử dụng maven, nhìn thấy một vài dự án ít hơn tuyệt vời mà sử dụng nó kém, và nói chung không tin maven. Ant + ivy hoạt động tuyệt vời, ai cần maven?

Kết quả của việc sử dụng leiningen, và bắt đầu một công việc mới, nơi chúng tôi có cấu hình maven thiết lập rất tốt, tôi đã thay đổi giai điệu hoàn toàn; Bây giờ tôi nghĩ rằng maven là tuyệt vời, và xa thích nó để kiến, mà tôi đã sử dụng trong một thời gian dài.

Cụ thể với clojure, một số ưu điểm của leiningen là:

  • dự án automagic giàn giáo: "Lein mới" thiết lập một dự án mới cho bạn. quy ước là quan trọng, nó giúp các nhà phát triển khác hiểu dự án của bạn và nhanh chóng tăng cường nó.
  • sự phụ thuộc và quản lý plugin. thêm một phụ thuộc là tầm thường, và không có một cách tuyệt vời mà tôi biết để làm quản lý phụ thuộc không maven được tích hợp chặt chẽ với clojure.
  • "lein repl" thiết lập classpath của bạn và mọi thứ chính xác, vì vậy bạn không cần phải đánh lừa nó, bạn chỉ có thể bắt đầu và chạy REPL.
  • tạo tác tạo tác: xây dựng bình chứa chất béo (lein uberjar) rất đơn giản và đã được thiết lập cho bạn.

Vì vậy, mặc dù chắc chắn có thể sử dụng clojure mà không cần leiningen, tôi thành thực không thấy lý do bạn muốn. Có quá nhiều điều tốt đẹp để phát triển từng ngày không sử dụng nó, theo ý kiến ​​của tôi.

4

liên quan đến "Maven có bắt buộc khi bạn muốn sử dụng Leiningen không?"

leiningen sử dụng và kết thúc tốt đẹp Maven nên bạn không thể thực sự tránh nó, mặc dù bạn không bao giờ cần phải chạm vào bất kỳ XML

4

Maven là không bắt buộc đối với Clojure như những người khác đã chỉ ra một cách đúng đắn.

Tuy nhiên, tôi muốn khuyến khích bạn nắm lấy Maven (trực tiếp hoặc qua leiningen). Nó có một số lợi thế lớn trong thế giới Clojure:

  • Bạn sẽ có năng suất cao hơn trong thời gian dài - một khi bạn đã có nó thiết lập, nó là khá ấn tượng để xem một xây dựng phức tạp, thử nghiệm và triển khai thực hiện trong một lệnh duy nhất. Bạn có thực sự muốn được tự thiết lập classpaths, tải phụ thuộc, tăng số phiên bản, tải lên các trang FTP vv?
  • Một trong những lợi thế lớn nhất khi sử dụng Clojure trên JVM là truy cập vào hệ sinh thái thư viện Java Java. Maven là công cụ được lựa chọn để tự động quản lý các phụ thuộc trên các thư viện Java. Gần như tất cả mọi thứ bạn có thể cần sẽ được trong kho Maven Central hoặc Clojars.
  • Clojure có xu hướng có thư viện tập trung nhỏ - điều này là tốt vì chúng "đơn giản" và bạn có thể chọn và chọn chức năng bạn thích. Đồng thời, điều đó cũng có nghĩa là bạn có thể có nhiều phụ thuộc thư viện hơn. Do đó một hệ thống quản lý xây dựng sẽ hữu ích hơn.
  • Bạn có thể làm cho Maven xây dựng là "gầy" như bạn thích. Rõ ràng bạn có thể kéo vào mọi phụ thuộc dưới ánh mặt trời nếu bạn thích, nhưng bạn cũng có thể tạo ra những chiếc lọ rất gọn gàng bằng cách loại bỏ những chiếc thuyền không cần thiết. Đó là sự lựa chọn của bạn.
  • Đây là tiêu chuẩn thực tế trong thế giới Clojure. Nếu không có gì khác, sử dụng nó có nghĩa là bạn sẽ có thể cộng tác với những người khác dễ dàng hơn.

P.S. Giống như bạn, tôi đã không thực sự nhìn thấy điểm Maven cách đây 5 năm. Sau đó, tôi đã cho nó một đi và thấy như thế nào mạnh mẽ nó có thể được cho công việc của tôi. Bây giờ tôi là một chuyển đổi :-)

Các vấn đề liên quan