2010-08-22 26 views

Trả lời

2

Đây có thể là câu hỏi hay hơn cho stacoverflow.com, nhưng tôi khuyên bạn nên Ant. Nó rất mạnh mẽ và linh hoạt.

1

Kiến và maven là công cụ xây dựng quá lớn. Với maven, nếu bạn muốn thực hiện các bản dựng tùy chỉnh, bạn có thể sẽ phải viết plugin maven của riêng mình mà không phải là khó. Có rất nhiều tài liệu trực tuyến để tạo plugin của riêng bạn. Điều thú vị về việc tạo một plugin maven là dễ dàng chia sẻ trong một tổ chức hoặc với một nhóm các nhà phát triển; làm chia sẻ các plugin này, bạn thường cần phải lưu trữ repo maven của riêng bạn. Ant là thực sự khá linh hoạt vì nó có một bộ thẻ thực sự mở rộng để làm bất cứ thứ gì bao gồm xây dựng, chạy thử nghiệm, di chuyển các tập tin xung quanh, kiểm tra mã từ repo, và thậm chí thực thi lệnh trên máy chủ từ xa. Theo tôi, kiến ​​là một chút dễ dàng hơn để làm việc với khi bạn phải tạo các bản dựng tùy chỉnh. Vấn đề với kiến ​​là khó tạo thành một mô-đun có thể chia sẻ mà bạn có thể chia sẻ và định cấu hình giống như bạn có thể sử dụng plugin maven.

Ivy là một công cụ xây dựng phổ biến khác tuy nhiên, tôi không có kinh nghiệm với nó.

+0

Ivy không phải là một công cụ buld, nó chỉ là một công cụ quản lý phụ thuộc đóng rất tốt đẹp với kiến ​​(cung cấp hỗ trợ cho nó). –

2

Các công cụ xây dựng tốt nhất cho Java Tôi biết cho đến nay có vẻ là maven, nhưng nó vẫn không đưa ra quá nhiều sự linh hoạt như cmake ở tất cả!

Điều đó có thể đúng, nhưng tôi muốn hỏi bạn có thực sự cần "tính linh hoạt" đó hay không. Một phần của giá trị lớn nhất của maven là nó tiêu chuẩn hóa sự phát triển. Cách thức nguồn/tài nguyên, sự phụ thuộc được quản lý, xác định chu kỳ sống, v.v.

Đó là vì tiêu chuẩn hóa này mà bạn có thể treo máy chủ, IDE, công cụ kiểm tra tự động và nhiều công cụ khác dễ dàng. Cũng quan trọng, các nhà phát triển mới tìm thấy nó dễ dàng hơn để làm quen với cơ sở mã bởi vì họ biết cấu trúc mong đợi.

Những lợi ích đó sẽ bị mất nếu bạn có bản dựng "linh hoạt", tuy nhiên, bạn có thực sự muốn đạt được điều gì từ việc xây dựng "linh hoạt" như vậy không? Rất nhiều người đang sử dụng maven, và đối với hầu như tất cả các vấn đề họ đã tạo ra một giải pháp. Nếu bạn cố gắng sử dụng các giải pháp được tiêu chuẩn hóa đó, bạn sẽ gặp khó khăn hơn nhiều khi xây dựng IMHO.

Nếu bạn có tình huống hiếm hoi trong đó bạn thực sự cần làm điều gì đó không thể thực hiện theo cách tiêu chuẩn, bạn vẫn có thể móc lệnh script/ant ... vào maven và thậm chí viết plugin tùy chỉnh. Nhưng tôi thực sự nghi ngờ bạn đã bao giờ cần phải làm điều đó.

-1

CMake không có khái niệm phụ thuộc (chỉ phụ thuộc vào nguồn đối tượng tệp hoặc thư viện được chia sẻ) nhưng không ở cấp độ tạo tác (như jar trong Java) hoặc RPM, tôi sẽ gọi đây là phụ thuộc của mô-đun. CMake không có khái niệm phụ thuộc transitive, vv CMake không có khái niệm về cấu trúc được xác định của một dự án (Công ước về cấu hình). CMake không có khái niệm về kho lưu trữ (như Maven). CMake không hỗ trợ tích hợp các bài kiểm tra Đơn vị/Tích hợp. Không xác định vòng đời xây dựng. CMake không có khái niệm về quản lý phát hành (mà maven có)

but it still doesn't give so much flexibility as cmake at all! 

Bạn nhớ chính xác điều gì ở đây trong Maven?

+0

Thật buồn cười khi mọi người có thể nhìn vào cùng một phần của thực tại và thấy những điều hoàn toàn ngược lại. Maving "có một khái niệm" của tất cả những điều này là chính xác những gì làm cho nó ít linh hoạt: bạn không thể đi chệch khỏi các khái niệm Maven't hoặc dễ dàng thêm những cái mới. Trong khi CMake cho phép bạn làm bất cứ điều gì một cách dễ dàng, nhưng làm cho nó tất cả các công việc với nhau trở nên dần dần khó hơn phức tạp hơn là xây dựng. –

+1

Tính linh hoạt mà bạn đang nói đến làm cho việc xây dựng trong một dự án lớn trở thành một mớ hỗn độn (tạo ra một dự án phát triển riêng biệt: Bản dựng), khiến bạn linh hoạt hơn khi có nhiều thứ bạn phải duy trì. Maven có đủ tính linh hoạt để thực hiện công việc. Có thể có những tình huống mà bạn đạt đến giới hạn, nhưng sau đó bạn có thể chỉ cần tạo Plugin. Bạn đang nói rằng bạn có thể làm bất cứ điều gì absoluteley một cách dễ dàng? Hm ... Điều đó có nghĩa là mặt khác, bạn phải định nghĩa những khái niệm tương tự hoặc những khái niệm tương tự này trước tiên trong một dự án và tốn thời gian. – khmarbaise

+0

@khmarbaise: Sự thiếu linh hoạt làm cho việc xây dựng một dự án lớn trở nên lộn xộn vì không có cách nào tác giả Maven có thể thỏa mãn mọi dự án (trên thực tế, Maven chỉ tốt cho các dự án đồ chơi nhỏ). Plugin tùy chỉnh là cách khó để đạt được các mục tiêu đơn giản mà bạn có thể thực hiện với các kịch bản lệnh shell đơn giản. Và phụ thuộc ... tốt, có một số ví dụ tốt từ lịch sử như quản lý gói Linux. Tuy nhiên, các nhà phát triển đồ chơi Maven hoàn toàn hơi say nó theo cách tồi tệ nhất có thể. Gọi nó là "quản lý phụ thuộc" là xúc phạm đến các nhà quản lý gói REAL. Và quản lý phát hành chỉ là một từ thông dụng. Tôi có thể viết kịch bản trong vài dòng. – woky

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