Maven - Tổng quan
Maven là gì?
Maven là một công cụ quản lý và hiểu dự án cung cấp cho các nhà phát triển một khuôn khổ vòng đời xây dựng hoàn chỉnh. Nhóm phát triển có thể tự động hóa cơ sở hạ tầng xây dựng của dự án gần như không mất thời gian vì Maven sử dụng bố cục thư mục tiêu chuẩn và vòng đời xây dựng mặc định.
Trong trường hợp môi trường nhiều nhóm phát triển, Maven có thể thiết lập cách thức làm việc theo tiêu chuẩn trong thời gian rất ngắn. Vì hầu hết các thiết lập dự án đều đơn giản và có thể tái sử dụng, Maven giúp cuộc sống của nhà phát triển trở nên dễ dàng trong khi tạo báo cáo, kiểm tra, xây dựng và thử nghiệm các thiết lập tự động hóa.
Maven cung cấp cho các nhà phát triển những cách quản lý sau:
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- Danh sách gửi thư
Tóm lại, Maven đơn giản hóa và chuẩn hóa quy trình xây dựng dự án. Nó xử lý việc biên dịch, phân phối, tài liệu, cộng tác nhóm và các tác vụ khác một cách liền mạch. Maven tăng khả năng tái sử dụng và đảm nhận hầu hết các nhiệm vụ liên quan đến xây dựng.
Tiến hóa Maven
Maven ban đầu được thiết kế để đơn giản hóa quy trình xây dựng trong dự án Jakarta Turbine. Có một số dự án và mỗi dự án chứa các tệp xây dựng ANT hơi khác nhau. JAR đã được đăng ký vào CVS.
Nhóm Apache sau đó đã phát triển Maven có thể xây dựng nhiều dự án cùng nhau, xuất bản thông tin dự án, triển khai dự án, chia sẻ JAR trên một số dự án và giúp đỡ với sự cộng tác của các nhóm.
Mục tiêu
Mục tiêu chính của Maven là cung cấp cho nhà phát triển những điều sau đây:
Một mô hình toàn diện cho các dự án, có thể tái sử dụng, có thể bảo trì và dễ hiểu hơn.
Các plugin hoặc công cụ tương tác với mô hình khai báo này.
Nội dung và cấu trúc dự án Maven được khai báo trong tệp xml, pom.xml, được gọi là Mô hình đối tượng dự án (POM), là đơn vị cơ bản của toàn bộ hệ thống Maven. Trong các chương sau, chúng tôi sẽ giải thích chi tiết về POM.
Quy ước về cấu hình
Maven sử dụng Convention kết thúc Configuration, có nghĩa là các nhà phát triển không bắt buộc phải tự tạo quy trình xây dựng.
Các nhà phát triển không cần phải đề cập đến từng chi tiết cấu hình. Maven cung cấp hành vi mặc định hợp lý cho các dự án. Khi một dự án Maven được tạo, Maven tạo cấu trúc dự án mặc định. Nhà phát triển chỉ được yêu cầu đặt các tệp cho phù hợp và họ không cần xác định bất kỳ cấu hình nào trong pom.xml.
Ví dụ: bảng sau đây hiển thị các giá trị mặc định cho tệp mã nguồn dự án, tệp tài nguyên và các cấu hình khác. Giả định,${basedir} biểu thị vị trí dự án -
Mục | Mặc định |
---|---|
mã nguồn | $ {basedir} / src / main / java |
Tài nguyên | $ {basedir} / src / main / resources |
Kiểm tra | $ {basedir} / src / test |
Mã byte tuân thủ | $ {basedir} / mục tiêu |
JAR có thể phân phối | $ {basedir} / target / lớp |
Để xây dựng dự án, Maven cung cấp cho các nhà phát triển các tùy chọn để đề cập đến các mục tiêu vòng đời và sự phụ thuộc của dự án (dựa trên khả năng của plugin Maven và các quy ước mặc định của nó). Phần lớn các nhiệm vụ liên quan đến quản lý dự án và xây dựng được duy trì bởi các plugin Maven.
Các nhà phát triển có thể xây dựng bất kỳ dự án Maven nào mà không cần phải hiểu cách hoạt động của các plugin riêng lẻ. Chúng ta sẽ thảo luận chi tiết về Maven Plugins trong các chương sau.
Đặc điểm của Maven
Thiết lập dự án đơn giản tuân theo các phương pháp hay nhất.
Sử dụng nhất quán trên tất cả các dự án.
Quản lý phụ thuộc bao gồm cập nhật tự động.
Một kho thư viện lớn và ngày càng phát triển.
Có thể mở rộng, với khả năng dễ dàng viết các plugin bằng Java hoặc các ngôn ngữ kịch bản.
Truy cập tức thì vào các tính năng mới với ít hoặc không cần cấu hình bổ sung.
Model-based builds - Maven có thể xây dựng bất kỳ số lượng dự án nào thành các loại đầu ra được xác định trước như jar, war, metadata.
Coherent site of project information - Sử dụng cùng một siêu dữ liệu theo quy trình xây dựng, maven có thể tạo một trang web và một tệp PDF bao gồm tài liệu hoàn chỉnh.
Release management and distribution publication - Không cần cấu hình bổ sung, maven sẽ tích hợp với hệ thống kiểm soát nguồn của bạn như CVS và quản lý việc phát hành một dự án.
Backward Compatibility- Bạn có thể dễ dàng chuyển nhiều mô-đun của một dự án vào Maven 3 từ các phiên bản Maven cũ hơn. Nó cũng có thể hỗ trợ các phiên bản cũ hơn.
Automatic parent versioning - Không cần chỉ định phụ huynh trong mô-đun con để bảo trì.
Parallel builds- Nó phân tích đồ thị phụ thuộc của dự án và cho phép bạn xây dựng các mô-đun lịch trình song song. Sử dụng điều này, bạn có thể đạt được hiệu suất cải thiện 20-50%.
Better Error and Integrity Reporting - Maven cải thiện báo cáo lỗi và nó cung cấp cho bạn một liên kết đến trang wiki của Maven, nơi bạn sẽ nhận được mô tả đầy đủ về lỗi.