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. 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ì và tại sao lại dùng Maven trong các project Java. Mục lục - Maven là gì
- Công dụng của Maven
- Maven hoạt động như thế nào
- Cấu trúc của một project Maven
- 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
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àoKhá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 MavenDướ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.
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
- 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 Có thể chọn workspace cũ hoặc workspace mới 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. Tiếp theo có 2 field cần phải điền vào là Group Id và Artifact Id. Nhấn finish. Đây là cấu trúc project mà Eclipse sẽ tạo ra.
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. |