Tôi muốn phản đối một số khiếu nại được đưa ra trong diễn đàn này:
Maven là tất cả hoặc không có gì. Hoặc ít nhất là theo như tôi có thể nói từ tài liệu. Bạn không thể dễ dàng sử dụng maven để thay thế kiến, và dần dần áp dụng các tính năng nâng cao hơn.
Điều này không đúng. Chiến thắng lớn của Maven là sử dụng nó để quản lý sự phụ thuộc của bạn một cách hợp lý và nếu bạn muốn làm điều đó trong maven và làm mọi thứ khác trong kiến, bạn có thể. Đây là cách thực hiện:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
Bây giờ bạn có một đối tượng classpath có tên 'maven.classpath' chứa tất cả các phụ thuộc maven được xác định trong tệp pom. Tất cả những gì bạn cần là đặt jar nhiệm vụ kiến maven vào thư mục lib của kiến.
Maven làm cho quá trình xây dựng của bạn phụ thuộc vào kết nối mạng của bạn.
Quá trình tìm nạp plugin và phụ thuộc mặc định phụ thuộc vào kết nối mạng, có, nhưng chỉ dành cho bản dựng ban đầu (hoặc nếu bạn thay đổi các phần phụ thuộc hoặc plugin đang sử dụng). Sau đó, tất cả các lọ được lưu vào bộ nhớ cache cục bộ. Và nếu bạn muốn buộc không có kết nối mạng, bạn có thể yêu cầu maven sử dụng chế độ ngoại tuyến.
Nó áp đặt cấu trúc cứng nhắc cho bạn ngay từ đầu.
Nó không rõ ràng nếu điều này đề cập đến định dạng tệp hoặc vấn đề 'quy ước so với cấu hình'. Đối với thứ hai, có rất nhiều mặc định vô hình như vị trí dự kiến của tài nguyên và tệp nguồn java hoặc khả năng tương thích của nguồn. Nhưng đây không phải là sự cứng nhắc, nó đặt các giá trị mặc định hợp lý cho bạn để bạn không cần phải xác định chúng một cách rõ ràng. Tất cả các cài đặt có thể bị ghi đè khá dễ dàng (mặc dù đối với người mới bắt đầu, có thể khó tìm thấy trong tài liệu cách thay đổi một số thứ nhất định).
Nếu bạn đang nói về định dạng tệp, thì điều đó sẽ được đề cập trong phần trả lời của phần tiếp theo ...
Nó dựa trên XML nên khó đọc như ANT.
Trước hết, tôi không hiểu làm thế nào bạn có thể phàn nàn rằng một số khía cạnh của thứ gì đó 'Không tốt hơn con kiến' như một lời biện minh cho việc nó có một đại diện tồi. Thứ hai, trong khi nó vẫn XML, định dạng của XML được nhiều hơn xác định. Hơn nữa, bởi vì nó được định nghĩa như vậy nên việc tạo một trình soạn thảo khách hàng dày hợp lý cho POM dễ dàng hơn rất nhiều. Tôi đã thấy các trang viết kịch bản xây dựng kiến dài ngoằng khắp nơi. Bất kỳ trình biên tập kịch bản xây dựng kiến nào sẽ không làm cho điều đó trở nên ngon miệng hơn, chỉ là một danh sách dài các nhiệm vụ được kết nối với nhau được trình bày theo một cách hơi khác.
Phải nói rằng có một vài lời phàn nàn mà tôi đã thấy ở đây rằng có hoặc có một số tội lỗi, bản chất lớn nhất
- Tài liệu kém / thiếu
- Các bản dựng có thể tái tạo
- Tích hợp Eclipse không tốt
- Lỗi
Mà phản hồi của tôi là gấp đôi. Đầu tiên, Maven là một công cụ trẻ hơn nhiều so với Ant or Make, vì vậy bạn phải mong đợi rằng nó sẽ mất thời gian để đạt được mức độ trưởng thành của các ứng dụng đó. Thứ hai là, nếu bạn không thích nó, hãy sửa chữa nó . Nó là một dự án mã nguồn mở và việc sử dụng nó và sau đó phàn nàn về điều gì đó mà bất kỳ ai cũng có thể giúp tôi giải quyết có vẻ khá bình thường đối với tôi. Bạn không thích tài liệu? Đóng góp vào nó để làm cho nó rõ ràng hơn, đầy đủ hơn hoặc dễ tiếp cận hơn cho người mới bắt đầu.
Sự cố bản dựng có thể tái tạo được chia thành hai vấn đề, phạm vi phiên bản và cập nhật plugin maven tự động. Đối với các bản nâng cấp của plugin, trừ khi bạn đảm bảo rằng khi bạn xây dựng lại dự án một năm sau rằng bạn đang sử dụng cùng một phiên bản JDK và Ant chính xác, thì đây chỉ là vấn đề tương tự với một tên khác. Đối với phạm vi phiên bản, tôi khuyên bạn nên làm việc trên một plugin sẽ tạo ra một bản pom tạm thời với các phiên bản bị khóa cho tất cả các phụ thuộc trực tiếp và bắc cầu và biến nó thành một phần của vòng đời phát hành maven. Bằng cách đó, các bản dựng bản phát hành của bạn luôn là mô tả chính xác của tất cả các phần phụ thuộc.