[Java Backend Zero to Hello] [Phase 3] BÀI 3.3: MAVEN CƠ BẢN
📚 Series: Java Backend Zero to Hello 📂 Phân đoạn: Phase 3: Công cụ & Build tools 📖 Nội dung: BÀI 3.3: MAVEN CƠ BẢN 💡 Khóa học lập trình Backend Java & Spring Boot chuẩn doanh nghiệp từ con số 0.
BÀI 3.3: MAVEN CƠ BẢN
Mục tiêu
- Hiểu Maven và vai trò
- Tạo project Maven
- Quản lý dependency
- Sử dụng Maven lifecycle
1. MAVEN LÀ GÌ?
Maven là công cụ quản lý dự án và build tự động cho Java.
Lợi ích
- Quản lý dependency tự động
- Chuẩn hóa cấu trúc project
- Build tự động (compile, test, package)
- Tích hợp với IDE
- Hệ sinh thái plugin phong phú
2. CÀI ĐẶT
2.1 Tải Maven
- Tải từ: https://maven.apache.org/download.cgi
- Giải nén vào thư mục (ví dụ:
C:\apache-maven-3.9.x)
2.2 Cấu hình biến môi trường
MAVEN_HOME = C:\apache-maven-3.9.x
PATH += %MAVEN_HOME%\bin
2.3 Kiểm tra
mvn -version
2.4 Cấu hình Maven local repository
Mặc định: ~/.m2/repository
Cấu hình trong ~/.m2/settings.xml:
<settings>
<localRepository>D:/maven-repo</localRepository>
</settings>
3. TẠO PROJECT MAVEN
3.1 Tạo từ command line
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
3.2 Tạo từ IDE
- IntelliJ: New Project → Maven
- Eclipse: New → Maven Project
3.3 Cấu trúc project
my-app/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/ # Source code
│ │ └── resources/ # Resources
│ └── test/
│ └── java/ # Test code
└── target/ # Build output (tự sinh)
4. POM.XML
POM (Project Object Model) là file cấu hình chính của Maven.
4.1 Cấu trúc cơ bản
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<!-- Thông tin project -->
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Dependencies -->
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- Build configuration -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.2 Các thành phần
| Thành phần | Mô tả |
|---|---|
groupId |
Tên tổ chức (namespace) |
artifactId |
Tên project |
version |
Phiên bản |
packaging |
Loại package (jar, war, pom) |
dependencies |
Thư viện sử dụng |
build |
Cấu hình build |
plugins |
Plugin Maven |
5. DEPENDENCY
5.1 Thêm dependency
Tìm trên https://mvnrepository.com/
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.2.0</version>
</dependency>
</dependencies>
5.2 Scope
| Scope | Mô tả |
|---|---|
compile |
Mặc định, có ở mọi nơi |
provided |
Cung cấp bởi runtime (Tomcat, JDK) |
runtime |
Cần ở runtime, không cần compile |
test |
Chỉ dùng cho test |
system |
Từ filesystem |
import |
Chỉ dùng trong dependencyManagement |
5.3 Các lệnh dependency
mvn dependency:tree # Cây dependency
mvn dependency:resolve # Tải tất cả dependency
mvn dependency:analyze # Phân tích dependency
mvn dependency:list # Liệt kê dependency
6. MAVEN LIFECYCLE
6.1 Các phase chính
validate → compile → test → package → verify → install → deploy
6.2 Các lệnh thường dùng
mvn clean # Xóa target/
mvn compile # Compile source
mvn test # Chạy test
mvn package # Tạo jar/war
mvn install # Cài vào local repo
mvn deploy # Deploy lên remote repo
# Kết hợp
mvn clean install # Clean + install
mvn clean package # Clean + package
mvn clean test # Clean + test
6.3 Skip test
mvn package -DskipTests # Bỏ qua test
mvn package -Dmaven.test.skip=true # Bỏ qua compile + run test
7. MAVEN REPOSITORY
7.1 Local Repository
- Vị trí:
~/.m2/repository - Lưu dependency đã tải về
7.2 Central Repository
- https://repo.maven.apache.org/maven2/
- Repository mặc định
7.3 Remote Repository
- Cấu hình trong
pom.xml:
<repositories>
<repository>
<id>my-repo</id>
<url>https://repo.example.com/maven2</url>
</repository>
</repositories>
8. PLUGIN PHỔ BIẾN
8.1 Compiler Plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
8.2 Surefire Plugin (Test)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.2</version>
</plugin>
8.3 Jar Plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
</plugin>
8.4 Spring Boot Plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
9. PROPERTIES VÀ VARIABLES
<properties>
<java.version>17</java.version>
<spring.version>3.2.0</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
10. BÀI TẬP THỰC HÀNH
Bài 1: Tạo project Maven đầu tiên
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=hello-maven \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
cd hello-maven
mvn compile
mvn package
java -cp target/hello-maven-1.0-SNAPSHOT.jar com.example.App
Bài 2: Thêm dependency
Thêm JUnit vào pom.xml, viết test cho class App.
Bài 3: Tạo executable JAR
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
11. TÓM TẮT
| Khái niệm | Mô tả |
|---|---|
| POM | File cấu hình Maven |
| Dependency | Thư viện bên ngoài |
| Lifecycle | Chuỗi phase build |
| Repository | Nơi lưu artifact |
| Plugin | Mở rộng chức năng |
| Scope | Phạm vi sử dụng dependency |
Bài tiếp theo: 3.4 Maven nâng cao
🧭 Điều hướng bài học
- ⬅️ Bài trước: BÀI 3.2: GIT NÂNG CAO
- ➡️ Bài tiếp theo: BÀI 3.4: MAVEN NÂNG CAO
- 📑 Toàn bộ lộ trình: Java Backend Zero to Hello
⭐ Hãy bookmark (clip) lại series để tiện theo dõi các bài học tiếp theo nhé!
All rights reserved