Hướng Dẫn Toàn Diện Về Lệnh Maven và Quy Trình Xây Dựng
Apache Maven không chỉ đơn giản là mvn clean install. Hiểu rõ về quy trình xây dựng và các lệnh chính giúp bạn kiểm soát mọi giai đoạn của biên dịch, kiểm tra và đóng gói cho các dự án như ứng dụng Spring Boot.
1️⃣ Tổng Quan Về Quy Trình Xây Dựng Maven
Maven có ba quy trình tiêu chuẩn. Mỗi quy trình bao gồm một chuỗi các giai đoạn—việc gọi một giai đoạn sau sẽ tự động thực hiện tất cả các giai đoạn trước đó.
| Quy Trình |
Mục Đích |
Các Giai Đoạn |
| default |
Xây dựng, kiểm tra và đóng gói dự án. |
validate → compile → test → package → verify → install → deploy |
| clean |
Xóa bỏ đầu ra xây dựng trước đó. |
pre-clean → clean → post-clean |
| site |
Tạo tài liệu dự án. |
pre-site → site → post-site → site-deploy |
💡 Ví dụ: mvn package sẽ chạy tất cả các giai đoạn cho đến và bao gồm package (validate, compile, test, rồi đến package).
2️⃣ Các Lệnh Maven Thường Dùng Nhất
Dưới đây là các lệnh cốt lõi mà bạn sẽ thường xuyên sử dụng, được nhóm theo mục đích.
🧹 Dọn Dẹp
| Lệnh |
Mô Tả |
mvn clean |
Xóa thư mục target/ để đảm bảo một lần xây dựng mới. |
mvn clean compile |
Dọn dẹp và biên dịch mã nguồn. |
mvn clean install |
Dọn dẹp, xây dựng, chạy kiểm tra và cài đặt artifact vào kho lưu trữ ~/.m2 của bạn. |
💻 Biên Dịch & Kiểm Tra
| Lệnh |
Hành Động |
mvn compile |
Biên dịch mã nguồn chính (src/main/java) vào target/classes. |
mvn test-compile |
Biên dịch mã nguồn kiểm tra (src/test/java). |
mvn test |
Chạy kiểm tra đơn vị với Surefire sau khi biên dịch. |
mvn verify |
Chạy kiểm tra tích hợp (ví dụ: plugin failsafe). |
📦 Đóng Gói & Cài Đặt
| Lệnh |
Hành Động |
mvn package |
Đóng gói mã nguồn vào định dạng được xác định trong pom.xml (jar hoặc war) bên trong target/. |
mvn install |
Cài đặt artifact đã đóng gói vào kho Maven địa phương của bạn để các dự án khác có thể phụ thuộc vào nó. |
mvn deploy |
Tải lên artifact đã xây dựng vào kho từ xa (ví dụ: Nexus, Artifactory). |
⚙️ Chạy Ứng Dụng (Spring Boot)
| Lệnh |
Hành Động |
mvn spring-boot:run |
Biên dịch và khởi động ứng dụng trực tiếp từ mã nguồn mà không tạo ra file jar. |
mvn spring-boot:repackage |
Tạo một fat jar có thể chạy với tất cả các phụ thuộc. |
📚 Thông Tin Dự Án & Tiện Ích
| Lệnh |
Hành Động |
mvn validate |
Kiểm tra cấu trúc dự án và file pom.xml có đúng không. |
mvn dependency:tree |
Hiển thị toàn bộ đồ thị phụ thuộc (tốt cho phân tích xung đột). |
mvn dependency:analyze |
Phát hiện các phụ thuộc không sử dụng hoặc chưa được khai báo. |
mvn help:effective-pom |
Hiển thị POM đã được hợp nhất hoàn chỉnh sau khi kế thừa và các profile. |
mvn versions:display-dependency-updates |
Liệt kê các phiên bản mới hơn của các phụ thuộc của bạn. |
mvn clean site |
Tạo báo cáo dự án trong thư mục target/site. |
3️⃣ Quy Trình Làm Việc Hàng Ngày Thông Thường
| Mục Tiêu |
Lệnh Đề Xuất |
| Xây dựng mới và chạy kiểm tra |
mvn clean install |
| Bỏ qua kiểm tra trong quá trình xây dựng |
mvn clean install -DskipTests (biên dịch kiểm tra nhưng không chạy chúng) |
| Xây dựng mà không biên dịch/ chạy kiểm tra |
mvn clean package -Dmaven.test.skip=true |
| Chạy nhanh ứng dụng Spring Boot |
mvn spring-boot:run |
4️⃣ Mẹo Cho Người Dùng Chuyên Nghiệp
- Xây dựng song song:
mvn -T 4 clean install sử dụng 4 luồng để xây dựng nhanh hơn.
- Profile: Kích hoạt profile xây dựng:
mvn package -Pprod.
- Chế độ ngoại tuyến:
mvn -o package xây dựng mà không cần truy cập kho từ xa.
- Đầu ra gỡ lỗi:
mvn -X package hiển thị nhật ký chi tiết để gỡ lỗi.
🏁 Những Điều Quan Trọng Nhất
- Maven hoạt động thông qua quy trình → giai đoạn → mục tiêu.
- Chạy một giai đoạn sau (ví dụ:
package) tự động thực hiện tất cả các giai đoạn trước đó.
- Học một vài lệnh (
clean, compile, test, package, install, deploy, cùng với các mục tiêu plugin Spring Boot) sẽ giúp bạn hoàn thành 99% công việc hàng ngày.
Việc làm chủ những lệnh này giúp bạn duy trì các lần xây dựng ổn định và sẵn sàng cho sản xuất—dù bạn đang đóng gói một thư viện đơn giản hay một microservice Spring Boot đầy đủ.