1. Maven là gì?

Maven là một công cụ quản lý dự án và tự động hóa quá trình xây dựng phần mềm. Nền tảng được sử dụng chủ yếu trong việc quản lý các phụ thuộc, quản lý xây dựng chuỗi và quản lý thư viện của các dự án Java.

  • Maven hỗ trợ việc tự động hóa các quá trình tạo dự án ban đầu, thực hiện biên dịch, kiểm thử, đóng gói và triển khai sản phẩm.
  • Được phát triển bằng ngôn ngữ Java cho phép Maven chạy trên nhiều nền tảng khác nhau: Windows, Linux và Mac OS…

2. Các thành phần đáng chú ý trong một dự án Maven

Một dự án maven bao gồm các thành phần:

  1. Tập tin cấu hình pom.xml.
  2. Các thư mục mã nguồn.

Tập tin cấu hình pom.xml

Maven dùng khái niệm Project Object Model (POM) một tệp cấu hình XML để mô tả việc build project, các thành phần phụ thuộc và các module. Nó định nghĩa trước các target cho việc khai báo task, trình biên dịch, đóng gói và thứ tự hoạt động để mọi việc diến ra tốt nhất.

Các thẻ xml của POM bao gồm:

  • project: nó là phần tử gốc của tệp pom.xml
  • modelVersion: nó là phần tử con của project. Nó chỉ định modelVersion. Nó nên được đặt thành 4.0.0
  • groupld: nó là phần tử con của project. Nó chỉ định id cho nhóm dự án
  • artifactId: nó là phần tử con của project. Nó chỉ định id cho artifact (dự án). Một artifact là thứ được sản xuất hoặc sử dụng bởi một dự án. Các ví dụ về artifact được Maven sản xuất cho một dự án bao gồm: JAR, các bản phân phối mã nguồn và nhị phân, và WAR
  • version: nó là phần tử con của project. Nó chỉ định phiên bản của artifact trong nhóm đã cho
  • packaging: xác định loại đóng gói như jar, war, ...
  • name: xác định tên của dự án Maven
  • url: xác định URL của dự án
  • dependencies: xác định các phụ thuộc cho dự án này
  • dependency: xác định một phụ thuộc. Nó được sử dụng bên trong phần tử dependencies
  • scope: xác định phạm vi cho dự án Maven này. Nó có thể là compile, provided, runtime, test và system

Một ví dụ về file pom.xml sẽ có dạng như sau:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.hello</groupId>
    <artifactId>untitled1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
<dependencies>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
</dependencies>
</project>

Các thư mục trong dự án maven

  • src/main/java: Thư mục chứa mã nguồn Java chính cho dự án.
  • src/main/resources: Thư mục chứa tài nguyên (ví dụ: cấu hình tệp, tài nguyên tệp) được sử dụng trong nguồn mã chính.
  • src/test/java: Thư mục chứa mã nguồn Java cho các bài kiểm tra và kiểm tra.
  • src/test/resources: Thư mục chứa tài nguyên được sử dụng trong quá trình kiểm tra.
  • target: Thư mục chứa kết quả của quá trình xây dựng, bao gồm tệp JAR, WAR hoặc các kết quả khác.
hình ảnh_2024-11-28_103813268.png

Maven lấy các thư viện jar từ đâu?

Hiện tại có khá nhiều kho lưu trữ thư viện jar nhưng phổ biến nhất vẫn là kho của Nexus. Kho này lưu trữ này chứa hàng ngàn thư viện Java mã nguồn mở phổ biến phổ biến bao gồm các thư viện mã nguồn mở của Young Monkeys.

Khi bạn build dự án thì các thư viện sẽ được tải về và lưu trữ trong thư mục .m2 trong thư mục user của bạn, khi bạn build dự án bằng maven thì nó cũng sẽ được đóng gói và đưa vào thư mục .m2 để các dự án khác cũng sử dụng được.

Quá trình build một ứng dụng bằng Maven

Quá trình build hay vòng đời của một dự án Maven có 9 giai đoạn:

  • clean - xóa tất cả các tệp đã biên dịch khỏi thư mục đích (nơi lưu các tạo phẩm đã hoàn thành)
  • validate - kiểm tra xem có tất cả thông tin cần thiết để xây dựng dự án hay không
  • compile - biên dịch các tệp mã nguồn
  • test - bắt đầu kiểm tra
  • package - gói các tệp đã biên dịch (trong kho lưu trữ JAR, WAR, v.v.)
  • verify - kiểm tra xem tệp được đóng gói đã sẵn sàng chưa
  • install - đặt gói vào kho lưu trữ cục bộ. Bây giờ nó có thể được sử dụng bởi các dự án khác như một thư viện bên ngoài
  • site - tạo tài liệu dự án
  • deploy - sao chép kho lưu trữ đã xây dựng vào kho lưu trữ từ xa
hình ảnh_2024-11-28_102746184.png

Tất cả các giai đoạn được thực hiện tuần tự, ví dụ: giai đoạn thứ tư không thể bắt đầu cho đến khi hoàn thành giai đoạn 1-3. Có hai cách để bắt đầu một giai đoạn:

  • Thông qua các lệnh: mvn clean, mvn package, mvn install, mvn deploy, mvn validate, ...
hình ảnh_2024-11-28_105203640.png
  • Sử dụng IntelliJ IDEA ( double click vào giai đoạn muốn thực hiện)
hình ảnh_2024-11-28_105432537.png

Cài đặt Maven

  • Bây giờ mở IntelliJ IDEA. Chọn New Project
  • Name là phần tên project
  • Location là nơi lưu của project
  • Language là ngôn ngữ của project (ở đây là java)
  • Build system chọn Maven
  • Chọn phiên bản JDK phù hợp
  • Chọn Create
hình ảnh_2024-11-28_111109330.png

Tổng kết

Maven là một công cụ mạnh mẽ giúp quản lý dự án Java, từ việc xây dựng, quản lý phụ thuộc cho đến việc triển khai ứng dụng một cách dễ dàng và hiệu quả. Bằng cách sử dụng Maven, bạn có thể tiết kiệm thời gian, giảm thiểu lỗi và cải thiện quy trình phát triển phần mềm.

Hy vọng rằng qua bài viết này, bạn đã có cái nhìn rõ ràng hơn về Maven và cách thức hoạt động của nó, từ đó áp dụng vào dự án của mình để đạt được hiệu quả tốt nhất. Chúc bạn lập trình thành công với Maven!