0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

🔧 Làm Chủ Lệnh Maven & Quy Trình Xây Dựng: Hướng Dẫn Toàn Diện

Đăng vào 6 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

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 đủ.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào