Tự động hóa và các công cụ phát triển chắc chắn là những khía cạnh quan trọng nhất của một dự án, và trong blog này, chúng tôi muốn thảo luận về Maven. Maven là một công cụ tự động hóa mạnh mẽ cho các dự án Java. Nó đơn giản hóa quá trình build và tạo ra cấu trúc thống nhất cho các dự án. Vì vậy, nó giúp bạn dễ dàng quản lý và hiểu các dự án hơn. Blog này bao gồm hầu hết mọi thứ trong thế giới Maven, bao gồm một loạt rộng rãi các lệnh và tùy chọn sẽ hợp lý hóa quy trình phát triển của bạn. Chúng tôi sẽ khám phá các khía cạnh khác nhau như Quản Lý Server và Container, Quản Lý Kiểm Soát Mã Nguồn (SCM), và GPG để ký các artifact. Ngoài ra, chúng tôi sẽ tìm hiểu các lệnh chuyên dụng cho Quản Lý Plugin, Assembly và Distribution, và tạo các trang dự án và báo cáo. Vì vậy, khi kết thúc hướng dẫn này, bạn sẽ có sự hiểu biết toàn diện về các lệnh và tùy chọn Maven.
- Tổng Quan Về Maven; Vòng Đời Dự Án
- Quản lý Phụ thuộc
- Thực thi
- Quản Lý Server và Container
- SCM (Quản Lý Kiểm Soát Mã Nguồn)
- GPG (Trình Bảo Vệ Quyền Riêng Tư GNU)
- Quản lý Phát hành
- Nguyên mẫu
- Quản lý Plugin
- Lắp ráp & Phân phối
- Các Lệnh Tạo Trang
- Các Lệnh WAR và JAR
- Báo cáo
- Xây dựng Tùy chỉnh
- Kết luận
- Câu hỏi thường gặp
Tổng Quan Về Maven; Vòng Đời Dự Án
Trong ngôn ngữ Yiddish, từ Maven có nghĩa là 'người tích lũy kiến thức'. Ý nghĩa này gần như giải thích được sức mạnh của Maven như một công cụ tự động hóa cho các dự án Java. Maven làm cho quá trình build và quản lý dự án trở nên rất đơn giản. Và nó thực hiện điều này bằng cách tự động hóa các nhiệm vụ khác nhau và cung cấp một hệ thống build thống nhất.
Bây giờ, để có ý tưởng rõ ràng về cách Maven hoạt động, hãy chia nhỏ khái niệm về Mô hình Đối tượng Dự án (POM). POM là một tệp XML chứa thông tin về dự án và chi tiết cấu hình. Maven sử dụng POM làm nền tảng của công việc của nó. Vì vậy, Maven lấy các dependency của dự án, thư mục build, thư mục nguồn, thư mục nguồn kiểm tra, và mục tiêu từ nguồn này để hoạt động.
Sau khi định nghĩa dự án và các dependency của nó từ pom.xml, bất cứ khi nào bạn chạy một lệnh Maven, nó sẽ đọc tệp pom để thực hiện giai đoạn build cụ thể của lệnh đó. Có một vòng đời dự án dài từ lúc bạn tạo dự án cho đến khi bạn thực sự triển khai nó. Vòng đời này định nghĩa trình tự các giai đoạn mà dự án của bạn sẽ trải qua. Mỗi giai đoạn đại diện cho một bước trong vòng đời và thực hiện các tác vụ cụ thể, chẳng hạn như biên dịch mã nguồn, chạy các bài kiểm tra, và đóng gói mã thành định dạng có thể phân phối. Tất cả những điều này làm cho vòng đời dự án của Maven trở thành một khái niệm quan trọng để hiểu. Vì vậy, hãy xem xét kỹ hơn các giai đoạn vòng đời của Maven:
- Xác thực: Giai đoạn này xác thực dự án có chính xác và tất cả thông tin cần thiết đã sẵn có.
- Biên dịch: Trong giai đoạn này, mã nguồn của dự án được biên dịch.
- Kiểm tra: Giai đoạn này kiểm tra mã nguồn đã biên dịch bằng một framework kiểm thử đơn vị phù hợp.
- Gói: Giai đoạn này đóng gói mã đã biên dịch ở định dạng có thể phân phối (ví dụ: JAR, WAR).
- Cài đặt: Trong giai đoạn cài đặt, gói được cài đặt vào kho lưu trữ cục bộ và trở nên sẵn dùng cho các dự án khác trên cùng một máy.
- Triển khai: Giai đoạn này sao chép gói cuối cùng vào kho lưu trữ từ xa để chia sẻ với các nhà phát triển và dự án khác.
Mỗi giai đoạn này có một lệnh mvn tương ứng mà chúng tôi sẽ đề cập trong các phần sắp tới của bộ gợi ý Maven này. Đây sẽ là những lệnh quan trọng nhất để quản lý quy trình xây dựng dự án của bạn.
Quản lý Phụ thuộc
Một trong những tính năng cốt lõi của Maven là Quản lý phụ thuộc. Tính năng này rất quan trọng đối với hiệu suất của Maven vì nó giúp xử lý các phụ thuộc dự án dễ dàng hơn.
Maven Quản Lý Dependencies Như Thế Nào
Maven sử dụng một kho lưu trữ tập trung, được gọi là Kho lưu trữ Maven Central, nơi lưu trữ một loạt lớn các thư viện và plugin. Khi một dự án cần một phụ thuộc, Maven tự động tải các thư viện cần thiết từ kho lưu trữ trung tâm và lưu trữ chúng trong kho lưu trữ cục bộ. Kho lưu trữ cục bộ này là một bộ nhớ đệm trên máy cục bộ của bạn giúp giảm thời gian tải xuống cho các lần xây dựng trong tương lai.
Các phụ thuộc trong Maven được chỉ định trong pom.xml tập tin dưới phần <dependencies> . Mỗi phụ thuộc được định nghĩa bởi một bộ tọa độ: groupId, artifactId, và version.
Phạm vi Phụ thuộc
Khi làm việc với Maven, bạn có thể chỉ định phạm vi của các phụ thuộc. Yếu tố này xác định mức độ hiển thị của classpath và giai đoạn vòng đời của phụ thuộc. Do đó, bạn có thể biết giai đoạn nào cần phụ thuộc này. Các phạm vi phổ biến là:
- Biên dịch: Đây là phạm vi mặc định và được sử dụng khi không chỉ định phạm vi nào. Các phụ thuộc có phạm vi này có sẵn trong tất cả các giai đoạn xây dựng và được bao gồm trong gói cuối cùng.
- Được cung cấp: Chúng tôi mong đợi các phụ thuộc có phạm vi này sẵn sàng từ môi trường thời gian chạy. Chúng được sử dụng trong quá trình biên dịch nhưng không được bao gồm trong gói cuối cùng.
- Thời gian chạy: Các phụ thuộc này không cần thiết cho quá trình biên dịch nhưng được yêu cầu trong quá trình thực thi. Chúng được bao gồm trong classpath thời gian chạy.
- Kiểm tra: Các phụ thuộc này chỉ cần thiết cho việc biên dịch và chạy các bài kiểm thử. Chúng không được bao gồm trong thời gian chạy hoặc gói cuối cùng.
- Hệ thống: Phạm vi hệ thống tương tự như phạm vi được cung cấp, nhưng bạn phải cung cấp tập tin JAR mà Maven sẽ sử dụng. Tập tin JAR phải có trong đường dẫn hệ thống.
Các Phụ Thuộc Bắc Cầu
Một trong những tính năng mạnh mẽ của Maven là nó có thể xử lý các phụ thuộc bắc cầu. Khi một dự án khai báo một phụ thuộc, Maven không chỉ bao gồm phụ thuộc đó mà còn bao gồm các phụ thuộc của nó, các phụ thuộc của các phụ thuộc đó, và cứ tiếp tục như vậy. Chuỗi phụ thuộc này được gọi là các phụ thuộc bắc cầu. Để làm cho mọi thứ rõ ràng, hãy tưởng tượng dự án của bạn phụ thuộc vào spring-boot-starter-web, bây giờ Maven sẽ bao gồm tất cả các thư viện mà spring-boot-starter-web phụ thuộc, chẳng hạn như Spring Core, Spring MVC và Jackson.
Bây giờ bạn đã biết về lý thuyết cách Maven quản lý các phụ thuộc, hãy xem cách làm việc với nó trong thực tế:
mvn dependency:resolve
Lệnh này có thể giải quyết và hiển thị tất cả các phụ thuộc cần thiết cho dự án của bạn. Bạn có thể sử dụng nó để xem những thư viện mà dự án của bạn phụ thuộc vào và đảm bảo mọi thứ đều ổn.
mvn dependency:tree
Với lệnh này, bạn có thể có cấu trúc cây của các phụ thuộc dự án của bạn. Nó cho thấy cách mỗi phụ thuộc có liên quan và giúp xác định các xung đột tiềm ẩn.
mvn dependency:analyze
Lệnh này phân tích các phụ thuộc của dự án của bạn để tìm ra bất kỳ hiện vật nào không được sử dụng. Nó giúp bạn dọn dẹp dự án của bạn và tránh các gói thừa không cần thiết.
Tính năng quản lý phụ thuộc của Maven làm cho quá trình phát triển của bạn dễ dàng hơn. Nó cũng giúp bạn tránh được các lỗi thường gặp và duy trì cấu trúc dự án sạch sẽ, có tổ chức.
Thực thi
Thực thi trong Maven liên quan đến việc chạy các tác vụ hoặc mục tiêu cụ thể trong dự án. Những tác vụ này có thể từ chạy các chương trình Java đến thực thi các script ngoài hoặc lệnh. Maven cung cấp các plugin mạnh mẽ để thực thi này dễ dàng. Đây là một tính năng khác của Maven giúp nó trở thành công cụ tuyệt vời để tự động hóa các phần khác nhau trong quy trình làm việc của dự án. Vì vậy, hãy xem xét các lệnh thực thi Maven chính:
mvn exec:java
Lệnh này được sử dụng để thực thi một lớp Java trong dự án của bạn. Nó rất hữu ích khi chạy các lớp main hoặc kiểm tra các chương trình Java độc lập mà không cần đóng gói chúng trước.
mvn exec:exec
Lệnh này cho phép bạn thực thi bất kỳ chương trình hoặc script bên ngoài nào từ trong môi trường Maven. Bạn có thể sử dụng nó để chạy shell script, công cụ bên ngoài, hoặc các chương trình khác là một phần của quá trình build của bạn.
Các lệnh thực thi trong Maven giúp bạn tự động hóa các tác vụ lặp lại. Bạn cũng có thể sử dụng chúng để tích hợp các công cụ bên ngoài và script vào vòng đời build Maven của bạn. Nhìn chung, chúng có thể giúp bạn quản lý các tác vụ của mình hiệu quả hơn nhiều.
Quản Lý Server và Container
Quản lý máy chủ và container là một giai đoạn quan trọng trong việc phát triển và triển khai các ứng dụng web. Maven tạo điều kiện thuận lợi cho quá trình này với các plugin mạnh mẽ cho phép bạn chạy, triển khai và quản lý các ứng dụng web trên nhiều máy chủ và container khác nhau trực tiếp từ quá trình build của bạn. Dưới đây là một số lệnh Maven cơ bản để quản lý máy chủ và container:
mvn tomcat7:run
Lệnh này chạy ứng dụng web của bạn bằng cách sử dụng Apache Tomcat. Nó rất hữu ích cho phát triển cục bộ và kiểm thử, cho phép bạn nhanh chóng triển khai và kiểm thử ứng dụng web của mình mà không cần thiết lập một môi trường máy chủ đầy đủ.
mvn jetty:run
Lệnh này chạy ứng dụng web của bạn bằng cách sử dụng một máy chủ web phổ biến được gọi là Jetty. Giống như Tomcat, Jetty tuyệt vời cho phát triển và kiểm thử nhờ khả năng triển khai nhẹ và nhanh chóng.
Cách Server và Container Management Hoạt Động
Maven sử dụng các plugin như tomcat7-maven-plugin và jetty-maven-plugin để quản lý các hoạt động của máy chủ. Những plugin này cho phép bạn khởi động, dừng và cấu hình các máy chủ như một phần của vòng đời build của bạn. Vì vậy, việc phát triển và kiểm thử các ứng dụng web trong một môi trường nhất quán trở nên dễ dàng hơn nhiều. Sử dụng các profile Maven để xác định cấu hình máy chủ cho các môi trường khác nhau giúp bạn quản lý các cài đặt khác nhau cho phát triển, kiểm thử và sản xuất. Tính năng Maven này cũng cho phép bạn cấu hình ghi nhật ký và giám sát trong các plugin máy chủ của bạn. Vì vậy, bạn có thể theo dõi các hoạt động của máy chủ và khắc phục sự cố một cách nhanh chóng.
SCM (Quản Lý Kiểm Soát Mã Nguồn)
Một khía cạnh quan trọng của bất kỳ dự án phát triển nào là Quản lý Kiểm soát Nguồn (SCM). Các nhóm phát triển cần SCM để quản lý các thay đổi đối với mã nguồn theo thời gian. Maven có một bộ lệnh để tương tác với các hệ thống SCM như Git, Subversion và các hệ thống khác. Các lệnh này có thể tự động hóa các tác vụ khác nhau, chẳng hạn như kiểm tra mã, lấy mã và cập nhật phiên bản dự án. Dưới đây là một số lệnh SCM Maven chính và các tùy chọn của chúng:
mvn scm:checkin
Bạn có thể sử dụng lệnh mvn này để kiểm tra các thay đổi của dự án vào SCM. Lệnh này giúp tự động hóa quá trình cam kết các thay đổi vào kho lưu trữ kiểm soát nguồn. Vì vậy, các bản cập nhật mới nhất chắc chắn được lưu và chia sẻ với nhóm.
mvn scm:checkout
Lệnh maven này được sử dụng để lấy mã dự án từ kho lưu trữ SCM và nó rất hữu ích khi nhận được một bản sao cục bộ của dự án. Vì vậy, bạn luôn chắc chắn rằng mình đang làm việc với phiên bản mới nhất của mã nguồn.
mvn scm:update
Lệnh mvn này cập nhật bản sao cục bộ đang hoạt động của dự án với các thay đổi mới nhất từ kho lưu trữ SCM. Công việc của lệnh này là đảm bảo rằng cơ sở mã cục bộ của bạn được đồng bộ với kho lưu trữ và bao gồm bất kỳ thay đổi mới nào được thực hiện bởi các thành viên nhóm khác.
mvn scm:status
Lệnh mvn này hiển thị trạng thái của bản sao cục bộ đang hoạt động so với kho lưu trữ SCM. Nói cách khác, nó cho bạn biết về tất cả các thay đổi đã được thực hiện cục bộ nhưng chưa được cam kết vào kho lưu trữ.
mvn scm:tag
Lệnh này được sử dụng để tạo một thẻ trong kho lưu trữ SCM. Các thẻ đánh dấu các điểm cụ thể trong lịch sử dự án, chẳng hạn như bản phát hành hoặc cột mốc quan trọng.
Các lệnh Maven SCM có thể hợp lý hóa rất nhiều quá trình quản lý mã nguồn của dự án của bạn. Việc hiểu và sử dụng các lệnh này sẽ nâng cao hiệu quả và sự cộng tác trong nhóm phát triển của bạn.
GPG (Trình Bảo Vệ Quyền Riêng Tư GNU)
GNU Privacy Guard (GPG) là một phần mềm mã hóa cho phép người dùng mã hóa và ký dữ liệu cũng như các giao tiếp. Trong bối cảnh Maven, GPG được sử dụng để ký các artifact nhằm đảm bảo tính xác thực và tính toàn vẹn của chúng. Điều này rất quan trọng khi bạn triển khai các artifact tới các kho lưu trữ công khai vì nó cho phép người dùng xác minh rằng các artifact không bị sửa đổi. Maven cung cấp một số lệnh để làm việc với GPG và tạo điều kiện thuận lợi cho quá trình ký và triển khai các artifact của dự án của bạn. Hãy xem một số ví dụ về các lệnh này:
mvn gpg:sign
Bạn có thể sử dụng lệnh maven này để ký các artifact của dự án bằng GPG. Ký các artifact đảm bảo rằng chúng có thể được xác minh bởi những người khác và cung cấp một lớp bảo mật và niềm tin. Lệnh này thường được sử dụng trong quá trình build để ký JAR, WAR và các loại artifact khác trước khi triển khai.
mvn gpg:sign-and-deploy-file
Lệnh mvn này kết hợp việc ký và triển khai một tệp thành một bước duy nhất. Bạn có thể sử dụng nó khi bạn muốn ký một artifact và ngay lập tức triển khai nó tới một kho lưu trữ. Điều này hợp lý hóa quá trình của bạn và đảm bảo bạn muốn ký một artifact và ngay lập tức triển khai nó tới một kho lưu trữ.
Kết hợp ký GPG vào quá trình build Maven của bạn có thể nâng cao tính bảo mật và độ tin cậy của phần mềm của bạn. Vì vậy, nó trở nên dễ dàng hơn cho người dùng để tin tưởng và xác minh các artifact của bạn.
Quản lý Phát hành
Quản lý bản phát hành rất quan trọng trong phát triển phần mềm. Với quản lý bản phát hành hiệu quả, bạn có thể đảm bảo rằng các phiên bản phần mềm được quản lý, đóng gói và triển khai đúng cách. Maven cung cấp một bộ lệnh để tự động hóa và hợp lý hóa quá trình phát hành. Hãy xem một số ví dụ về các tùy chọn maven và lệnh để quản lý bản phát hành:
mvn release:prepare
Lệnh mvn này được dùng để chuẩn bị một dự án cho việc phát hành. Nó thực hiện các tác vụ như kiểm tra xem có thay đổi chưa được commit, cập nhật số phiên bản trong pom.xml các tệp, gắn thẻ bản phát hành trong hệ thống quản lý mã nguồn (SCM), và cập nhật pom.xml các tệp lên phiên bản phát triển tiếp theo. Nó đảm bảo dự án ở trạng thái ổn định và sẵn sàng phát hành.
mvn release:perform
Lệnh này thực hiện quá trình phát hành thực tế. Nó lấy dự án từ SCM tại thẻ được tạo bởi lệnh release:prepare xây dựng dự án và triển khai các artifact đến kho lưu trữ được chỉ định. Lệnh này đảm bảo các artifact được xây dựng từ trạng thái chính xác của mã vào thời điểm chuẩn bị phát hành.
mvn release:clean
Lệnh mvn này xóa tất cả các tệp sao lưu bộ mô tả phát hành được tạo trong quá trình release:prepare Nó dọn sạch môi trường và đảm bảo không có tệp thừa lại từ các lần thử phát hành trước. Lệnh này giúp bạn có không gian làm việc sạch sẽ và ngăn chặn các vấn đề tiềm ẩn trong các lần phát hành tiếp theo.
Sử dụng các lệnh quản lý bản phát hành giúp tối ưu hóa quy trình phát hành, cải thiện chất lượng phần mềm và đảm bảo các bản phát hành được quản lý hiệu quả.
Nguyên mẫu
Nếu bạn là một nhà phát triển muốn tạo cấu trúc dự án dựa trên các mẫu được xác định trước, bạn nên cân nhắc sử dụng Maven Archetype plugin. Ở đây chúng tôi sẽ thảo luận các lệnh Maven chính liên quan đến archetype.
mvn archetype:generate
Bạn có thể sử dụng lệnh mvn này để tạo một dự án mới từ một mẫu hiện có, hay "archetype". Lệnh này hướng dẫn người dùng chọn một archetype và cấu hình dự án mới. Vì vậy nó giúp bạn thiết lập một dự án có cấu trúc tốt.
mvn archetype:catalog
Lệnh này liệt kê các archetype có sẵn có thể được dùng để tạo các dự án mới. Nó hữu ích để khám phá các mẫu khác nhau được cung cấp bởi cộng đồng Maven và xác định archetype nào phù hợp nhất với nhu cầu dự án của bạn.
Bằng cách sử dụng hai lệnh maven này, bạn có thể nhanh chóng bắt đầu một dự án mới. Cho dù bạn bắt đầu một ứng dụng Java đơn giản hay một dự án doanh nghiệp phức tạp, Maven archetype cung cấp một điểm khởi đầu quý giá.
Quản lý Plugin
Maven plugin cho phép các nhà phát triển mở rộng chức năng của Maven và tự động hóa các tác vụ khác nhau trong vòng đời xây dựng. Quản lý plugin hiệu quả đảm bảo dự án của bạn vẫn dễ bảo trì và các bản xây dựng có thể tái tạo được. Phần này sẽ bao gồm các lệnh quản lý Maven plugin cần thiết.
mvn plugin:download
Lệnh này được dùng để tải xuống một Maven plugin cụ thể từ kho lưu trữ. Bạn có thể sử dụng nó khi bạn muốn đảm bảo rằng một plugin cụ thể có sẵn trong kho lưu trữ cục bộ của bạn trước khi chạy các lệnh Maven khác phụ thuộc vào nó.
mvn plugin:help
Lệnh maven này hiển thị thông tin chi tiết và tài liệu về một Maven plugin cụ thể. Bạn có thể sử dụng nó khi bạn cần hiểu rõ các mục tiêu, tham số và cấu hình khác nhau có sẵn cho một plugin.
Các lệnh quản lý Maven plugin này cải thiện quá trình xây dựng, tự động hóa các quy trình làm việc và duy trì các tiêu chuẩn cao về chất lượng và sự nhất quán của dự án.
Lắp ráp & Phân phối
Chức năng tập hợp và phân phối của Maven cho phép các nhà phát triển đóng gói các dự án của họ thành các định dạng khác nhau để phân phối. Bạn có thể sử dụng những công cụ này để tạo các JAR có thể thực thi, các ứng dụng được gói hoặc các bản phân phối tùy chỉnh bao gồm các dependency và các tài nguyên khác. Ở đây chúng tôi sẽ bao gồm các lệnh Maven chính cho tập hợp và phân phối.
mvn assembly:assembly
Lệnh này tạo một tập hợp cho dự án. Một tập hợp là một gói có thể phân phối có thể bao gồm các tệp nhị phân, mã nguồn, dependency và các tài nguyên khác. Lệnh này sử dụng Assembly Plugin để tạo các gói này dựa trên bộ mô tả tập hợp được cung cấp.
mvn assembly:directory
Lệnh mvn này tạo cấu trúc thư mục của tập hợp mà không thực sự tạo tệp lưu trữ. Lệnh này hữu ích để kiểm tra và xác minh nội dung và cấu trúc của tập hợp trước khi đóng gói nó.
Học cách sử dụng các lệnh tập hợp và phân phối của Maven có thể giúp bạn rất nhiều trong việc đóng gói và phân phối các ứng dụng của bạn.
Các Lệnh Tạo Trang
Các lệnh site của Maven là một cách tuyệt vời để ghi chép các dự án. Các lệnh này tạo các trang web tài liệu toàn diện cho các dự án của bạn. Ở đây chúng tôi sẽ bao gồm các lệnh site cần thiết và chức năng của chúng.
mvn site
Lệnh mvn site tạo tài liệu site của dự án và bao gồm thông tin về dự án, chẳng hạn như tóm tắt dự án, báo cáo dependency, sử dụng plugin, v.v.
mvn site:deploy
Bạn có thể sử dụng lệnh này để triển khai site được tạo ra đến một máy chủ từ xa. Điều này hữu ích để cung cấp tài liệu cho một nhóm người rộng hơn, chẳng hạn như các thành viên trong nhóm hoặc công chúng.
mvn site:stage
Lệnh này lưu trữ site vào một thư mục cục bộ. Bạn có thể sử dụng lệnh này để xem trước site cục bộ trước khi triển khai nó đến máy chủ từ xa.
Tài liệu gọn gàng và được tổ chức tốt rất quan trọng trong quá trình phát triển dự án. Lệnh maven site cho phép bạn có mọi thứ đúng vị trí và có giao tiếp tốt hơn trong các nhóm phát triển.
Các Lệnh WAR và JAR
Là một developer, bạn chắc chắn biết rằng khả năng đóng gói ứng dụng của mình thành các định dạng khác nhau là rất quan trọng trong quá trình phát triển. Maven cho phép bạn đóng gói các ứng dụng Java thành nhiều định dạng khác nhau, bao gồm các tệp WAR (Web Application Archive) và JAR (Java Archive). Tầm quan trọng của các định dạng đóng gói này trở nên rõ ràng khi bạn muốn triển khai ứng dụng trên các máy chủ và phân phối thư viện. Dưới đây là những lệnh mvn chính để tạo các tệp WAR và JAR:
mvn war:war
Lệnh này biên dịch dự án của bạn và đóng gói nó thành tệp WAR. Khi bạn chạy lệnh này, Maven sẽ tạo tệp WAR trong thư mục target của dự án của bạn.
mvn jar:jar
Lệnh này biên dịch dự án của bạn và đóng gói nó thành tệp JAR trong thư mục target của dự án của bạn.
Hai lệnh này giúp bạn trong triển khai và phân phối. Bạn có thể sử dụng chúng để quản lý và phân phối các ứng dụng Java một cách hiệu quả.
Báo cáo
Mọi dự án phần mềm đều cần báo cáo chi tiết để theo dõi tiến độ. Maven có các plugin mạnh mẽ và các lệnh mvn để tạo các loại báo cáo khác nhau. Phần này bao gồm hai plugin Maven mà bạn có thể sử dụng để báo cáo: Surefire và JaCoCo.
Trình cắm Surefire
Bạn có thể sử dụng plugin này để chạy các bài kiểm tra đơn vị trong dự án Maven. Nó tạo ra các báo cáo chi tiết về các bài kiểm tra đã được thực thi để bạn có thể chắc chắn rằng mã hoạt động theo cách bạn mong đợi.
mvn surefire-report:report
Lệnh này tạo báo cáo kiểm tra đơn vị ở định dạng dễ đọc và phân tích. Với lệnh này, Maven tạo báo cáo HTML trong target/site thư mục của dự án của bạn. Báo cáo này bao gồm thông tin về số lượng bài kiểm tra được chạy, vượt qua và thất bại, cùng với các dấu vết ngăn xếp chi tiết cho bất kỳ lỗi nào.
Plugin JaCoCo
Bạn có thể sử dụng plugin này để đo lường và báo cáo độ bao phủ mã được kiểm tra bằng các bài kiểm tra đơn vị. Vì vậy, bạn có thể đảm bảo rằng các bài kiểm tra của bạn đang bao phủ codebase.
mvn jacoco:report
Nếu bạn muốn xem những phần nào của mã đã được kiểm tra và những phần nào chưa được kiểm tra, lệnh này sẽ cung cấp cho bạn báo cáo độ bao phủ mã. Báo cáo mà lệnh này tạo là báo cáo HTML trong target/site/jacoco thư mục cho thấy các chỉ số bao phủ chi tiết cho các lớp, phương thức và dòng mã.
Hai plugin này giúp bạn theo dõi kết quả kiểm tra và độ bao phủ mã, cung cấp cho bạn những thông tin chi tiết hữu ích về sức khỏe và chất lượng của codebase của bạn.
Xây dựng Tùy chỉnh
Maven cho phép bạn tùy chỉnh build để đáp ứng các yêu cầu cụ thể của dự án của bạn. Trong phần này, chúng tôi sẽ trình bày cách sử dụng Maven profiles và định nghĩa thuộc tính để tùy chỉnh build.
Hồ sơ Maven
Với Maven profiles, bạn có thể xác định các cấu hình khác nhau cho dự án của bạn, có thể được kích hoạt dựa trên các yếu tố khác nhau như thuộc tính hệ thống, biến môi trường hoặc điều kiện tùy chỉnh. Điều này có nghĩa là bạn có thể tùy chỉnh quá trình build cho các môi trường khác nhau, chẳng hạn như phát triển, kiểm tra và sản xuất. Bạn có thể xác định các profile trong phần pom.xml tập tin dưới phần <profiles> của bạn. Và -p tùy chọn theo sau ID profile sẽ kích hoạt profile cho bạn.
Định Nghĩa Thuộc Tính
Maven properties cho phép bạn định nghĩa các giá trị có thể được tái sử dụng trong toàn bộ pom.xml tệp của bạn. Các thuộc tính này có thể được chỉ định trong pom.xml, thông qua dòng lệnh hoặc trong các tệp thuộc tính bên ngoài. Bạn có thể xác định các thuộc tính trong <properties> Mục của bạn pom.xml. Sau khi định nghĩa chúng, bạn có thể sử dụng các thuộc tính này trong pom.xml tệp.
Tùy chỉnh quá trình build trong Maven có thể giúp bạn thích ứng dự án của mình với các môi trường và yêu cầu khác nhau. Bằng cách sử dụng profiles, bạn có thể chuyển đổi giữa các thiết lập build khác nhau và bằng cách sử dụng properties, bạn có thể tái sử dụng và quản lý các giá trị một cách hiệu quả.
Kết luận
Blog này cung cấp giới thiệu toàn diện về Maven trong khi hướng dẫn bạn qua từng bước quá trình phát triển ứng dụng Java. Là một công cụ tự động hóa mạnh mẽ cho các dự án Java, Maven có các lệnh và khả năng khác nhau cho từng giai đoạn phát triển, và biết cách làm việc với các lệnh này và nắm vững chúng sẽ cải thiện chất lượng quá trình phát triển của bạn.
Câu hỏi thường gặp
Maven Được Dùng Để Làm Gì?
Maven là công cụ tự động hóa build và quản lý dự án cho các dự án Java. Nó đơn giản hóa quá trình build, quản lý các phụ thuộc của dự án và cung cấp cấu trúc dự án được chuẩn hóa. Maven cũng hỗ trợ tài liệu dự án, báo cáo và phân phối.
POM Trong Maven Là Gì?
Maven là công cụ tự động hóa quá trình build và quản lý các phụ thuộc cho các dự án Java. POM (Project Object Model) là tệp XML trong Maven chứa thông tin về dự án và chi tiết cấu hình được Maven sử dụng để xây dựng dự án. Tệp POM định nghĩa các phụ thuộc của dự án, plugin, goal và các cấu hình build khác.