Dưới đây là hướng dẫn chi tiết để tạo báo cáo phụ thuộc dự án bằng cách sử dụng maven-project-info-reports-plugin và maven-site-plugin, bao gồm cấu hình, các bước thực thi và xác minh kết quả.
I. Chuẩn bị Môi trường
- Yêu cầu phiên bản Maven
- Đảm bảo Maven ≥ 3.7.0 (khuyến nghị phiên bản ổn định mới nhất).
- Kiểm tra phiên bản: ``` mvn -version
2. **Yêu cầu phiên bản JDK**
- JDK ≥ **1.8** (tương thích với phiên bản Maven đang sử dụng).
**II. Cấu hình `pom.xml`**
------------------
### **1. Cấu hình cơ bản (Khuyến nghị)**
Thêm cấu hình plugin sau vào `pom.xml` để tạo **báo cáo phụ thuộc** và tích hợp vào trang web dự án:
<properties>
<!-- Quản lý phiên bản plugin thống nhất -->
<maven-site-plugin.version>3.15.0</maven-site-plugin.version>
<maven-project-info-reports-plugin.version>3.4.5</maven-project-info-reports-plugin.version>
</properties>
<build>
<plugins>
<!-- Cấu hình maven-site-plugin (tạo trang web) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<!-- Cấu hình maven-project-info-reports-plugin (tạo báo cáo phụ thuộc) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven-project-info-reports-plugin.version}</version>
<reportSets>
<reportSet>
<reports>
<!-- Chỉ tạo báo cáo phụ thuộc (có thể thêm các báo cáo khác) -->
<report>dependencies</report>
<!-- Nếu cần thêm báo cáo, bỏ ghi chú các dòng sau -->
<!-- <report>dependency-info</report> -->
<!-- <report>license</report> -->
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
### **2. Cấu hình đơn giản (chỉ báo cáo phụ thuộc)**
Nếu chỉ cần tạo báo cáo phụ thuộc mà không tích hợp vào trang web, có thể đơn giản hóa cấu hình:
**III. Quy trình Thực thi**
----------
### **1. Dọn dẹp và tạo báo cáo**
Chạy lệnh sau để dọn dẹp các tệp cũ và tạo báo cáo phụ thuộc:
mvn clean site
- `clean`: Xóa thư mục `target/` để tránh dữ liệu cũ gây nhiễu.
- `site`: Kích hoạt tạo trang web, bao gồm báo cáo phụ thuộc.
### **2. Chỉ tạo báo cáo phụ thuộc (bỏ qua trang web)**
Nếu chỉ cần báo cáo phụ thuộc (tệp HTML), sử dụng:
mvn project-info-reports:dependencies
- Báo cáo sẽ được tạo tại `target/site/dependencies.html`.
**IV. Xác minh Kết quả**
----------
### **1. Xem báo cáo phụ thuộc**
Mở tệp HTML đã tạo:
Linux/macOS
open target/site/dependencies.html
Windows
start target/site/dependencies.html
Nội dung báo cáo ví dụ:
- **Cây phụ thuộc**: Hiển thị phụ thuộc trực tiếp và phụ thuộc truyền.
- **Phạm vi phụ thuộc**: Đánh dấu các phạm vi như `compile`, `test`, `provided`.
- **Phụ thuộc tùy chọn**: Liệt kê các phụ thuộc có `<optional>true</optional>`.
### **2. Xem trang web đầy đủ (tùy chọn)**
Nếu đã cấu hình `maven-site-plugin`, trang web đầy đủ sẽ bao gồm báo cáo phụ thuộc:
open target/site/index.html
Trong thanh điều hướng trang web sẽ có liên kết **Dependencies**.
**V. Cách sử dụng Nâng cao**
----------
### **1. Tạo tất cả báo cáo thông tin dự án**
Sửa nút `<reports>` trong `pom.xml` để thêm nhiều loại báo cáo:
### **2. Tùy chỉnh thư mục đầu ra báo cáo**
Sử dụng `<outputDirectory>` của `maven-site-plugin` để cấu hình:
### **3. Tích hợp vào CI/CD**
Thêm bước vào Jenkins/GitHub Actions:
Ví dụ GitHub Actions
- name: Tạo Trang Maven run: mvn clean site
- name: Tải lên Báo cáo uses: actions/upload-artifact@v4 with: name: maven-reports path: target/site/
**VI. Giải quyết Vấn đề Thường gặp**
------------
### **1. Tạo báo cáo thất bại (ClassNotFound)**
- **Nguyên nhân**: Phiên bản plugin không tương thích với Maven.
- **Giải pháp**:
- Nâng cấp plugin lên phiên bản mới nhất (như `3.4.5`).
- Kiểm tra phiên bản JDK có ≥ 1.8 không.
### **2. Báo cáo phụ thuộc trống**
- **Nguyên nhân**: Dự án không có phụ thuộc hoặc cấu hình sai.
- **Giải pháp**:
- Đảm bảo đã khai báo `<dependencies>` trong `pom.xml`.
- Chạy `mvn dependency:tree` để kiểm tra phụ thuộc đã được giải quyết thành công.
### **3. Tạo trang web chậm**
- **Nguyên nhân**: Quá nhiều báo cáo hoặc vấn đề mạng (tải plugin phụ thuộc).
- **Giải pháp**:
- Chỉ tạo các báo cáo cần thiết (như chỉ `dependencies`).
- Sử dụng chế độ ngoại tuyến của Maven (`-o`): ```
mvn clean site -o