Maven la gi trong java

Updated on 1 Tháng Bảy, 2022

Views: 1.300

Apache Maven là một công cụ dùng để quản lý các thư viện dependencies và build các dự án Java.

Maven la gi trong java

Trong bài viết này, mình sẽ tổng hợp các bài viết của Hướng Dẫn Java về Apache Maven để các bạn tiện theo dõi.

Cài đặt

  • Cài đặt Apache Maven trên Window

Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Apache Maven trên Window.

  • Cài đặt Apache Maven trên macOS

Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Apache Maven trên macOS.

Sử dụng

  • Quản lý nhiều project với Apache Maven

Trong bài viết này, mình hướng dẫn các bạn cách quản lý nhiều project với Apache Maven.

  • Quản lý version của các sub-projects trong một Maven parent project

Trong bài viết này, mình sẽ hướng dẫn các bạn cách quản lý version của các sub-projects trong một Maven parent project.

  • Nói về tập tin settings.xml trong Apache Maven – Phần 1

Trong bài viết này, mình nói về tập tin settings.xml trong Apache Maven.

  • Nói về tập tin settings.xml trong Apache Maven – Phần 2

Trong bài viết này, mình nói về tập tin settings.xml trong Apache Maven.

  • Đưa thư viện bạn cần vào Local Maven Repository

Để sử dụng các dependencies không có trên các Remote Maven Repository, các bạn cần đưa chúng vào Local Maven Repository.

  • Tạo mới Maven project trong Eclipse

Mình sẽ hướng dẫn các bạn tạo Maven project thông thường trong Eclipse.

  • Tạo ứng dụng web sử dụng Maven trong Eclipse

Để tạo các ứng dụng web sử dụng Maven trong Eclipse, các bạn có thể tham khảo bài viết này.

  • Hiện thực một Maven Archetype

Trong bài viết này, mình hướng dẫn các bạn cách hiện thực một Maven Archetype project để generate một Maven project với các cấu hình có sẵn.

  • Những tập tin cần ignore với version control system trong Maven project

Trong bài viết này, mình thảo luận với các bạn những tập tin cần ignore với version control system trong Maven project.

Plugin

  • Compile source code sử dụng Maven Compiler Plugin

Trong bài viết này, mình hướng dẫn các bạn cách sử dụng Maven Compiler Plugin

  • Chạy ứng dụng web với Maven Jetty plugin

Để chạy các ứng dụng web sử dụng Maven, các bạn có thể sử dụng Maven Jetty Plugin.

  • Chạy ứng dụng web với Liberty Maven plugin

Trong bài viết này, mình hướng dẫn các bạn cách chạy ứng dụng web với Liberty Maven plugin.

  • Chạy Unit Test với Maven Surefire Plugin

Trong bài viết này, mình giới thiệu với các bạn về plugin Maven Surefire Plugin của Apache Maven.

  • Code coverage với JaCoCo Maven Plugin

Trong bài viết này, mình hướng dẫn các bạn cách sử dụng JaCoCo Maven Plugin để tính toán code coverage trong project Maven.

  • Thêm mới source hoặc resources directory vào Maven project sử dụng Builder Helper Maven Plugin

Trong bài viết này, mình hướng dẫn các bạn cách thêm mới source hoặc resources directory vào Maven project sử dụng Builder Helper Maven Plugin.

  • Compile code Groovy trong ứng dụng Java sử dụng Groovy Eclipse Maven plugin

Trong bài viết này, mình sẽ hướng dẫn các bạn cách compile source code Groovy trong ứng dụng Java sử dụng Groovy Maven plugin.

  • Build executable jar sử dụng Maven Shade Plugin

Trong bài viết này, mình hướng dẫn các bạn cách sử dụng Maven Shade Plugin để build một ứng dụng Java có thể chạy standalone được.

  • Generate API contract sử dụng Spring MVC-RAML Plugin

Trong bài viết này, mình sẽ hướng dẫn các bạn cách generate API contract sử dụng Spring MVC-RAML Plugin.

  • Generate API contract sử dụng OpenAPI Generator Maven plugin

Trong bài viết này, mình sẽ hướng dẫn các bạn cách generate API contract sử dụng OpenAPI Generator Maven plugin.

Các lỗi thường gặp

  • Sửa lỗi “Fatal error compiling: tools.jar not found” của Apache Maven trong Eclipse

Trong bài viết này, mình sẽ hướng dẫn các bạn cách sửa lỗi “Fatal error compiling: tools.jar not found” khi sử dụng Apache Maven trong Eclipse.

  • Chạy Unit Test sử dụng JUnit 5 với Apache Maven

Sử dụng JUnit 5 để viết Unit Test, các bạn cần phải làm gì để có thể chạy được Unit Test trong project Maven, hãy đọc bài viết này nhé.

Trong bài này chúng ta sẽ tìm hiểu về
Maven là gìtại sao lại dùng Maven trong các project Java.

Mục lục

  1. Maven là gì
  2. Công dụng của Maven
  3. Maven hoạt động như thế nào
  4. Cấu trúc của một project Maven
  5. Tạo một project Maven đơn giản

Maven là gì

Một cách đơn giản hóa, Maven là một công cụ để quản lý cấu trúc của một dự án, từ các library (thư viện) đến phân bố thư mục, versioning.

Một cách chi tiết hơn

  • Maven sẽ quản lý cấu trúc folder và package của dự án dựa theo mô hình đã được định sẵn.
  • Các thư viện được thêm vào dự án thông qua Maven sẽ được kiểm tra độ tương thích với nhau. Đồng thời, một số thư viện cần có các thư viện khác đi kèm với nó. Maven sẽ quản lý luôn cả chuyện đó. Trong Maven, các thư viện được khai báo còn gọi là các dependency.

Công dụng của Maven

  • Hỗ trợ quản lý thư viện tốt. Hãy so sánh Maven với việc thêm thư viện thông thường. Khi bạn thêm một thư viện nào đó vào project bằng tay, bạn sẽ phải thêm các thư viện đi kèm chung với nó. Giả sử ở đây mình cần thêm thư viện của Spring, mình sẽ thêm bằng tay các thư viện liên quan sau đây
    Maven la gi trong java

    Tuy nhiên, với Maven, mình chỉ cần khai báo thư viện thiết yếu nhất và Maven sẽ làm những thứ còn lại.
  • Hỗ trợ quản lý version phù hợp. Các thư viện khi thêm vào còn phải dựa vào version của nó. Các thư viện đi kèm cũng cần có version phù hợp. Giả sử trong một team, các thành viên không thể gặp trực tiếp nhau mà phải làm việc qua internet thì việc thống nhất việc sử dụng thư viện phù hợp là điều rất cần thiết để tránh các vấn đề về xung đột sau này.
  • Có sẵn cấu trúc thư mục cụ thể. Các thư mục được tổ chức sẵn để tổ chức code tốt ngay từ ban đầu.
  • Có thể so sánh Maven khá giống Nuget của Visual Studio. Tuy nhiên Nuget không đảm nhận chức năng tạo cấu trúc project sẵn.

Maven hoạt động như thế nào

Khác với việc phải thêm thư viện thủ công như bình thường, các dependency trong Maven được cộng đồng tải online. Khi khai báo các dependency trong file pom.xml và thực hiện việc Update project thì các dependency đó sẽ được tải xuống. Có hai loại Maven thông dụng

  • Loại internal: các dependency khi được tải trên mạng về sẽ được lưu lại trong máy. Điều này đồng nghĩa với việc nếu có nhiều người tham gia project làm việc trên nhiều máy khác nhau thì mỗi máy phải tải các dependency này về. Tuy nhiên, nó cũng có điểm thuận lợi khi không cần phải liên tục kết nối internet để có repository.
  • Loại Nexus: các dependency khi tải về có thể được share trong cùng một mạng. Đồng thời nó có một số tính năng cải tiến hơn loại internal. Tuy nhiên do nhu cầu về kết nối và đơn giản thì loại internal vẫn được sử dụng nhiều hơn.

Cấu trúc một project Maven

Dưới đây là một ví dụ điển hình cho cấu trúc thư mục của một project Maven.

Maven la gi trong java

Trong đó

  • Root: chứa file pom.xml và các thư mục con. File pom.xml chứa các khai báo dependency, khai báo scope của các task (test, build, v.v…). POM viết tắt cho Project Object Model. Dưới đây là cấu trúc chuẩn của một dependency trong pom.xml
    Maven la gi trong java
    • groupId: chứa id của group. Group ở đây thường là tên các tổ chức tạo ra các thư viện. Ví dụ với thư viện spring-core sẽ có groupId là org.springframework. Đồng thời groupId cũng chính là tên package.
    • artifactId: chứa id của thư viện. Ở đây có thể coi là tên của thư viện. Tuy nhiên tên các thư viện trên Maven repository không được trùng nhau.
    • version: chứa thông tin version của dependency.
    • scope: khai báo tầm vực hoạt động. Ví dụ trên hình thì nó sẽ được compile chỉ khi chạy test.
  • src/main/java: chứa các file java. Đối với một web project thì ở đây thường sẽ được chia ra các package nhỏ chứa các file config, controller, view model, v.v…
  • src/main/resources
    chứa các file property hoặc trong trường hợp sử dụng hibernate thì đây là nơi chứa hibernate.
  • src/test/java
    chứa các file test java.
  • src/test/resources
    chứa các resource cần thiết cho việc test.

Cách tạo một project Maven trong Eclipse

Ở đây mình sẽ hướng dẫn các bạn tạo Maven dành cho web Spring do hiện nay với các hệ thống Spring lớn thì đa số đều dùng Maven để quản lý.

Maven đã được tích hợp sẵn trong Eclipse trong các bản gần đây, ngoại trừ các bản quá cũ. Mình khuyên là nên xài bản mới hơn

Chọn New -> Other ->Maven Project

Maven la gi trong java

Có thể chọn workspace cũ hoặc workspace mới

Maven la gi trong java

Tiếp theo ta sẽ chọn catalog là Internal. Do mình đang ví dụ về Spring nên mình sẽ chọn loại maven-archetype-webapp.

Maven la gi trong java

Tiếp theo có 2 field cần phải điền vào là Group Id và Artifact Id.

Maven la gi trong java

Nhấn finish. Đây là cấu trúc project mà Eclipse sẽ tạo ra.

Maven la gi trong java

Tuy nhiên đôi khi thì Eclipse tạo ra thiếu một số thư mục. Các bạn có thể thêm vào cho hoàn chỉnh với cấu trúc mẫu đã nêu ở trên.