Chuyên đề Maven: POM, coordinates, repository, dependency management, lifecycle, plugin và multi-module project
Maven là công cụ build và dependency management phổ biến nhất trong các Java backend project. Khi học Maven, bạn không nên chỉ biết copy pom.xml, mà còn cần hiểu các khái niệm cơ bản như coordinates, repository, transitive dependency, lifecycle, plugin và quản lý multi-module.
Dành cho ai
- Những bạn đang học build project Java và dependency management.
- Developer dùng Maven để viết project nhưng thường bị vướng dependency conflict, version không thống nhất, quản lý multi-module hoặc CI build bị kẹt.
- Độc giả chuẩn bị phỏng vấn, cần trình bày rõ core concept và best practices của Maven.
- Engineer cần bảo trì project Spring Boot, microservice hoặc multi-module Java.
Trọng tâm học
- POM là core config của Maven project, còn coordinates dùng để định danh duy nhất một artifact.
- Maven repository được chia thành local repository, private repository và central repository; dependency resolution sẽ tìm kiếm theo một thứ tự nhất định.
- Dependency scope, transitive dependency, dependency exclusion và version management quyết định các Jar package mà project sử dụng cuối cùng.
- Lifecycle định nghĩa các build phase, còn plugin chịu trách nhiệm thực thi các task như compile, test và package.
- Maven Wrapper có thể cố định version Maven mà project sử dụng, phù hợp với team collaboration và CI environment.
- Với multi-module project, cần chú ý đến parent POM,
dependencyManagement,pluginManagementvà module boundary.
Thứ tự đọc đề xuất
- Tổng hợp core concept của Maven: trước tiên tìm hiểu POM, coordinates, repository, dependency, lifecycle, plugin và multi-module project.
- Best practices của Maven: tiếp theo học standard directory structure, compiler version, BOM, dependency version management, Maven Wrapper, CI và các practice thường gặp.
- Kết hợp với một project Spring Boot để xem
pom.xml: tập trung vào parent project, dependency scope, plugin config và dependency tree cuối cùng.
Bài viết cốt lõi
- Tổng hợp core concept của Maven: giới thiệu một cách có hệ thống về định vị của Maven, POM, coordinates, repository, dependency, lifecycle, plugin và multi-module project.
- Best practices của Maven: tổng hợp standard directory structure, compiler version, thống nhất dependency version, Maven Wrapper, CI và các đề xuất khi sử dụng hằng ngày.
Câu hỏi thường gặp
- Maven là gì? Nó chủ yếu giải quyết những vấn đề nào?
- POM, groupId, artifactId, version lần lượt là gì?
- Local repository, private repository và central repository khác nhau như thế nào?
- Maven transitive dependency là gì? Làm thế nào để kiểm tra dependency conflict?
dependencyManagementvàdependencieskhác nhau như thế nào?- Lifecycle và plugin của Maven có quan hệ gì?
- Vì sao project của team thường được khuyến nghị commit Maven Wrapper?
compile,provided,runtime,testvà các dependency scope khác có điểm gì khác nhau?- Vì sao multi-module project thường cần parent POM?
Chuyên đề liên quan
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
