Các công cụ phát triển và tự động hóa chắc chắn là một trong 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 xây dựng và tạo ra một cấu trúc thống nhất cho các dự án. Vì vậy, nó giúp quản lý và hiểu các dự án dễ dàng hơn. Blog này bao gồm hầu hết mọi thứ trong thế giới Maven, bao gồm nhiều 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 ta sẽ khám phá các khía cạnh khác nhau như Quản lý máy chủ & vùng chứa, Quản lý kiểm soát nguồn (SCM) và GPG để ký các tạo phẩm. Ngoài ra, chúng tôi sẽ xem xét các lệnh chuyên biệt để Quản lý plugin, Lắp ráp & Phân phối cũng như tạo các trang web và báo cáo của dự án. Vì vậy, đến cuối hướng dẫn này, bạn sẽ hiểu rõ 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
- Thi hành
- Quản lý máy chủ và container
- SCM (Quản lý kiểm soát nguồn)
- GPG (Bảo vệ quyền riêng tư của GNU)
- Quản lý phát hành
- nguyên mẫu
- Quản lý plugin
- Lắp ráp & Phân phối
- Lệnh tạo trang web
- Các lệnh WAR & JAR
- Báo cáo
- Tùy chỉnh xây dựng
- Phần kết luận
- Câu hỏi thường gặp
Tổng quan về Maven; Vòng đời dự án
Trong tiếng Yiddish, từ Maven có nghĩa là “người tích lũy kiến thức”. Ý nghĩa này giải thích khá nhiều về 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 xây dựng và quản lý dự án trở nên rất đơn giản. Và nó làm được điều đó bằng cách tự động hóa nhiều tác vụ khác nhau và cung cấp một hệ thống xây dựng thống nhất.
Bây giờ, để có ý tưởng rõ ràng về cách hoạt động của Maven, 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 cho công việc của mình. Vì vậy, Maven lấy các phần phụ thuộc của dự án, thư mục build, thư mục nguồn, thư mục nguồn kiểm tra và các mục tiêu từ nguồn này để hoạt động.
Sau khi xác định dự án và các phụ thuộc của nó từ pom.xml, bất cứ khi nào bạn chạy lệnh Maven, nó sẽ đọc tệp pom để thực thi giai đoạn xây dựng cụ thể của lệnh đó. Có một vòng đời dự án dài từ thời điểm bạn tạo dự án cho đến khi bạn thực sự triển khai nó. Vòng đời này xác định trình tự các giai đoạn mà dự án của bạn phải trải qua. Mỗi giai đoạn đại diện cho một giai đoạn trong vòng đời và thực thi các tác vụ cụ thể, chẳng hạn như biên dịch mã nguồn, chạy thử nghiệm 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 cần 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 nhận dự án là chính xác và tất cả các thông tin cần thiết đều có sẵn.
- Biên dịch: Trong giai đoạn này, mã nguồn của dự án được biên dịch.
- Bài kiểm tra: Giai đoạn này kiểm tra mã nguồn đã biên dịch bằng cách sử dụng khung kiểm thử đơn vị phù hợp.
- Bưu kiện: Giai đoạn này đóng gói mã đã biên dịch ở định dạng có thể phân phối được (ví dụ: JAR, WAR).
- Cài đặt: Trong giai đoạn cài đặt, gói được cài đặt trong kho lưu trữ cục bộ và có sẵn 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ẽ trình bày trong các phần sắp tới của bảng tính maven của chúng tôi. Đây sẽ là những lệnh quan trọng nhất được sử dụng để quản lý quá 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ần phụ thuộc của dự án dễ dàng hơn.
Cách Maven quản lý các phần phụ thuộc
Maven sử dụng một kho lưu trữ tập trung, được gọi là Kho lưu trữ trung tâm Maven, nơi lưu trữ rất nhiều thư viện và plugin. Khi một dự án yêu cầu phần phụ thuộc, Maven sẽ tự động tải xuống 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à bộ đệ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 bản dựng trong tương lai.
Các phần phụ thuộc trong Maven được chỉ định trong pom.xml tập tin dưới <phụ thuộc> phần. Mỗi phụ thuộc được xác định bởi một tập hợp tọa độ: ID nhóm, ID tạo tác, Và phiên bản.
Phạm vi phụ thuộc
Khi làm việc với Maven, bạn có thể chỉ định phạm vi phụ thuộc. Yếu tố này xác định khả năng hiển thị đường dẫn lớp và giai đoạn vòng đời của phần phụ thuộc. Vì vậy, bạn có thể biết giai đoạn nào yêu cầu sự 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 có phạm vi nào được chỉ định. Các phần 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.
- Cung cấp: Chúng tôi hy vọng các phần phụ thuộc có phạm vi này sẽ sẵn sàng trong 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ó trong gói cuối cùng.
- Thời gian chạy: Những phần 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 đường dẫn lớp thời gian chạy.
- Bài kiểm tra: Những phụ thuộc này chỉ cần thiết để biên dịch và chạy thử nghiệm. Chúng không được bao gồm trong gói 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 JAR mà Maven sẽ sử dụng. JAR phải có trong đường dẫn hệ thống.
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ần phụ thuộc, Maven tự động bao gồm không chỉ phần phụ thuộc đó mà còn bao gồm cả phần phụ thuộc của nó, phần phụ thuộc của các phần phụ thuộc đó, v.v. Chuỗi phụ thuộc này được gọi là phụ thuộc bắc cầu. Để làm rõ mọi thứ, 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 cũng sẽ bao gồm tất cả các thư viện mà spring-boot-starter-web phụ thuộc vào, chẳng hạn như Spring Core, Spring MVC và Jackson.
Bây giờ bạn đã biết về lý thuyết về cách Maven quản lý các phần 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 dự án của bạn phụ thuộc vào thư viện nào và đảm bảo mọi thứ đều đúng thứ tự.
mvn dependency:tree
Với lệnh này, bạn có thể có cấu trúc dạng cây của các phần phụ thuộc dự án của mình. Nó cho thấy mỗi phần phụ thuộc có liên quan như thế nào 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ần phụ thuộc của dự án của bạn để tìm bất kỳ thành phần nào không được sử dụng. Nó giúp bạn dọn dẹp dự án của mình và tránh sự cồng kềnh không cần thiết.
Các tính năng quản lý phụ thuộc của Maven giúp quá trình phát triển của bạn trở nên dễ dàng. Chúng cũng giúp bạn tránh những cạm bẫy thường gặp và duy trì cấu trúc dự án có tổ chức, rõ ràng.
Thi hành
Việc thực thi trong Maven liên quan đến việc chạy các nhiệm vụ hoặc mục tiêu cụ thể trong dự án. Các tác vụ này có thể bao gồm từ việc chạy các chương trình Java đến thực thi các tập lệnh hoặc lệnh bên ngoài. Maven cung cấp các plugin mạnh mẽ để giúp việc thực thi này trở nên dễ dàng. Đây là một tính năng khác của Maven giúp nó trở thành một 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 dự án của bạn. Vì vậy, hãy xem lại 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 chính hoặc thử nghiệm 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 tập lệnh bên ngoài nào từ trong môi trường Maven. Bạn có thể sử dụng nó để chạy các tập lệnh shell, các công cụ bên ngoài hoặc các chương trình khác nằm trong quá trình xây dựng 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 đi lặp lại. Bạn cũng có thể sử dụng chúng để tích hợp các công cụ và tập lệnh bên ngoài vào vòng đời xây dựng Maven của mình. Vì vậy, nhìn chung chúng có thể giúp bạn quản lý công việc của mình hiệu quả hơn nhiều.
Quản lý máy chủ và container
Quản lý máy chủ và vùng chứa 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 bằng 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à vùng chứa khác nhau trực tiếp từ quá trình xây dựng của bạn. Dưới đây là một số lệnh Maven cần thiết để quản lý máy chủ và vùng chứa:
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 việc phát triển và thử nghiệm cục bộ, đồng thời cho phép bạn nhanh chóng triển khai và thử nghiệm ứng dụng web của mình mà không cần thiết lập 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 máy chủ web phổ biến có tên là Cầu tàu. Giống như Tomcat, Jetty rất phù hợp để phát triển và thử nghiệm do khả năng triển khai nhẹ và nhanh chóng.
Cách thức hoạt động của quản lý máy chủ và vùng chứa
Maven sử dụng các plugin như tomcat7-maven-plugin Và cầu cảng-maven-plugin để quản lý hoạt động của máy chủ. Các plugin này cho phép bạn khởi động, dừng và định cấu hình máy chủ như một phần trong vòng đời xây dựng của bạn. Vì vậy, việc phát triển và thử nghiệm 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. Việc sử dụng cấu hình Maven để xác định cấu hình máy chủ cho các môi trường khác nhau sẽ giúp bạn quản lý các cài đặt khác nhau để phát triển, thử nghiệm và sản xuất. Tính năng này của Maven cũng cho phép bạn định cấu hình ghi nhật ký và giám sát trong các plugin máy chủ của mình. Vì vậy, bạn có thể theo dõi 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 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 nhiều tác vụ khác nhau, chẳng hạn như kiểm tra mã, kiểm tra mã và cập nhật phiên bản dự án. Dưới đây là một số lệnh Maven SCM 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 đối với SCM. Lệnh này giúp tự động hóa quá trình thực hiện các thay đổi đối với kho lưu trữ kiểm soát nguồn. Vì vậy, những cập nhật mới nhất chắc chắn sẽ được lưu và chia sẻ với nhóm.
mvn scm:checkout
Lệnh maven này được sử dụng để kiểm tra mã của dự án từ kho lưu trữ SCM và rất hữu ích để lấy 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ã nguồn mới nhất.
mvn scm:update
Lệnh mvn này cập nhật bản sao làm việc cục bộ của dự án với những 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ộ hóa với kho lưu trữ và bao gồm mọi thay đổi mới do các thành viên khác trong nhóm thực hiện.
mvn scm:status
Lệnh mvn này hiển thị trạng thái của bản sao làm việc cục bộ liên quan đến kho SCM. Nói cách khác, nó cho bạn biết về tất cả những thay đổi đã được thực hiện cục bộ nhưng chưa được đưa vào kho lưu trữ.
mvn scm:tag
Lệnh này được sử dụng để tạo thẻ trong kho SCM. Thẻ đánh dấu các điểm cụ thể trong lịch sử của dự án, chẳng hạn như các bản phát hành hoặc các cột mốc quan trọng.
Các lệnh Maven SCM có thể hợp lý hóa đáng kể quá trình quản lý mã nguồn dự án của bạn. 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 của bạn trong nhóm phát triển.
GPG (Bảo vệ quyền riêng tư của GNU)
GNU Privacy Guard (GPG) là một phần mềm mật mã cho phép người dùng mã hóa và ký dữ liệu cũng như thông tin liên lạc. Trong ngữ cảnh của Maven, GPG được sử dụng để ký các tạo phẩm 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 tạo phẩm vào kho công cộng vì nó cho phép người dùng xác minh rằng các tạo phẩm đó không bị giả mạo. Maven cung cấp một số lệnh để làm việc với GPG và hỗ trợ quá trình ký và triển khai các tạo phẩm trong dự án của bạn. Hãy xem một số lệnh này làm ví dụ:
mvn gpg:sign
Bạn có thể sử dụng lệnh maven này để ký các tạo phẩm của dự án với GPG. Các tạo phẩm ký tên đảm bảo rằng chúng có thể được người khác xác minh và cung cấp một lớp bảo mật và tin cậy. Lệnh này thường được sử dụng trong quá trình xây dựng để ký các JAR, WAR và các loại tạo phẩm 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 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 tạo phẩm và ngay lập tức triển khai nó vào kho lưu trữ. Điều này hợp lý hóa quy trình của bạn và đảm bảo rằng bạn muốn ký một tạo phẩm và triển khai ngay lập tức nó vào kho lưu trữ.
Việc kết hợp đăng nhập GPG vào quy trình xây dựng Maven của bạn có thể nâng cao tính bảo mật và độ tin cậy cho phần mềm của bạn. Vì vậy, người dùng sẽ dễ dàng tin tưởng và xác minh các tạo phẩm của bạn hơn.
Quản lý phát hành
Quản lý phát hành rất quan trọng trong phát triển phần mềm. Với quản lý 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 quy trình phát hành. Hãy xem xét một số ví dụ về các tùy chọn và lệnh maven để quản lý bản phát hành:
mvn release:prepare
Lệnh mvn này được sử dụng để chuẩn bị phát hành một dự án. Nó thực hiện các tác vụ như kiểm tra xem không có thay đổi nào chưa được cam kết, 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ý kiểm soát nguồn (SCM) và cập nhật pom.xml tập tin sang phiên bản phát triển tiếp theo. Nó đảm bảo rằng 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 thi quá trình phát hành thực tế. Nó kiểm tra dự án từ SCM tại thẻ được tạo bởi phát hành: chuẩn bị lệnh, xây dựng dự án và triển khai các tạo phẩm vào kho lưu trữ được chỉ định. Lệnh này đảm bảo rằng các tạo phẩm được xây dựng từ trạng thái chính xác của mã tại thời điểm chuẩn bị phát hành.
mvn release:clean
Lệnh mvn này loại bỏ tất cả các tệp sao lưu mô tả phát hành được tạo trong quá trình phát hành: chuẩn bị quá trình. Nó dọn dẹp môi trường và đảm bảo rằng không có tệp nào còn sót lại từ các lần phát hành trước. Lệnh này cung cấp cho bạn một không gian làm việc sạch sẽ và ngăn ngừa các sự cố tiềm ẩn trong các bản phát hành tiếp theo.
Việc sử dụng các lệnh quản lý bản phát hành sẽ hợp lý hóa các quy trình phát hành, cải thiện chất lượng phần mềm và đảm bảo rằng các bản phát hành được quản lý hiệu quả.
nguyên mẫu
Nếu bạn là 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 plugin Maven Archetype. Ở đây, chúng ta sẽ thảo luận về các lệnh Maven chính được liên kết với nguyên mẫu.
mvn archetype:generate
Bạn có thể sử dụng lệnh mvn này để tạo dự án mới từ mẫu hiện có hoặc “nguyên mẫu”. Lệnh này hướng dẫn người dùng chọn nguyên mẫu và định 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 nguyên mẫu có sẵn có thể được sử dụng để tạo dự án mới. Nó rất hữu ích khi khám phá các mẫu khác nhau do cộng đồng Maven cung cấp và xác định nguyên mẫu 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 đang bắt đầu một ứng dụng Java đơn giản hay một dự án doanh nghiệp phức tạp, các nguyên mẫu Maven đều cung cấp một điểm khởi đầu có giá trị.
Quản lý plugin
Các plugin Maven 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 một cách hiệu quả sẽ đảm bảo rằng dự án của bạn vẫn có thể duy trì được và các bản dựng có thể tái tạo được. Phần này sẽ bao gồm các lệnh quản lý plugin Maven cần thiết.
mvn plugin:download
Lệnh này được sử dụng để tải xuống một plugin Maven cụ thể từ kho lưu trữ. Bạn có thể sử dụng nó khi 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 và tài liệu chi tiết về một plugin Maven cụ thể. Bạn có thể sử dụng nó khi cần hiểu các mục tiêu, thông số và cấu hình khác nhau có sẵn cho một plugin.
Các lệnh quản lý plugin Maven này nâng cao quá trình xây dựng, tự động hóa quy trình công việc và duy trì các tiêu chuẩn cao về chất lượng và tính nhất quán của dự án.
Lắp ráp & Phân phối
Chức năng lắp ráp và phân phối của Maven cho phép các nhà phát triển đóng gói 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 thứ này để tạo các JAR thực thi, các ứng dụng đi kèm hoặc các bản phân phối tùy chỉnh bao gồm các phần phụ thuộc và các tài nguyên khác. Ở đây, chúng tôi sẽ đề cập đến các lệnh Maven chính để lắp ráp và phân phối.
mvn assembly:assembly
Lệnh này tạo một tập hợp cho dự án. Hợp ngữ 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, phần phụ thuộc và các tài nguyên khác. Lệnh này sử dụng Plugin hội để 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 rất hữu ích cho việc kiểm tra và xác minh nội dung cũng như 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 lắp rá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 ứng dụng của mình.
Lệnh tạo trang web
Các lệnh trang web của Maven là một cách tuyệt vời để ghi lại các dự án. Các lệnh này tạo ra 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ẽ đề cập đến các lệnh thiết yếu của trang web và chức năng của chúng:
mvn site
Lệnh mvn site tạo tài liệu trang web 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 phụ thuộc, cách sử dụng plugin, v.v.
mvn site:deploy
Bạn có thể sử dụng lệnh này để triển khai trang web được tạo tới máy chủ từ xa. Điều này rất hữu ích để cung cấp tài liệu cho nhiều đối tượ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 sẽ đưa trang web vào một thư mục cục bộ. Bạn có thể sử dụng lệnh này để xem trước trang web 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 rất quan trọng trong quá trình phát triển một dự án. Lệnh trang web maven cho phép bạn chuẩn bị sẵn mọi thứ và giao tiếp tốt hơn trong các nhóm phát triển.
Các lệnh WAR & JAR
Là một nhà phát triển, bạn chắc chắn biết rằng việc có thể đóng gói các ứ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 (Lưu trữ ứng dụng web) và JAR (Lưu trữ Java). 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 lên máy chủ và phân phối thư viện. Ở đây, chúng tôi đề cập đến các lệnh mvn chính để tạo 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 một tệp WAR. Khi bạn chạy lệnh này, Maven sẽ tạo tệp WAR trong thư mục đích 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 một tệp JAR trong thư mục đích của dự án.
Hai lệnh này giúp bạn trong việc triển khai và phân phối. Vì vậy, bạn có thể sử dụng chúng để quản lý và phân phối hiệu quả các ứng dụng Java của mình.
Báo cáo
Bất kỳ dự án phần mềm nào cũng cần báo cáo chi tiết để theo dõi tiến độ. Và Maven có các plugin và lệnh mvn mạnh mẽ để tạo nhiều 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.
Plugin chắc chắn
Bạn có thể sử dụng plugin này để chạy thử nghiệm đơn vị trong dự án Maven. Nó tạo ra các báo cáo chi tiết về các thử nghiệm đã được thực hiện để 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 một báo cáo HTML trong mục tiêu/trang web 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ần chạy thử nghiệm, đạt và không thành công, cùng với 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 mức độ bao phủ mã 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 thử nghiệm của bạn đang bao trùm cơ sở mã.
mvn jacoco:report
Nếu bạn muốn xem phần nào của mã đã được kiểm tra và phần nào chưa, lệnh này sẽ cung cấp cho bạn báo cáo phạm vi mã. Báo cáo mà lệnh này tạo ra là một báo cáo HTML ở dạng mục tiêu/trang web/jacoco thư mục hiển thị số liệu 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à mức độ bao phủ mã, đồng thời cung cấp cho bạn thông tin chi tiết hữu ích về tình trạng và chất lượng của cơ sở mã của bạn.
Tùy chỉnh xây dựng
Maven cho phép bạn điều chỉnh bản dựng để đáp ứng các yêu cầu cụ thể của dự án. Trong phần này, chúng tôi sẽ đề cập đến cách sử dụng cấu hình Maven và định nghĩa thuộc tính để tùy chỉnh bản dựng.
Hồ sơ Maven
Với cấu hình Maven, bạn có thể xác định các cấu hình khác nhau cho dự án của mình, cấu hình này 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 quy trình xây dựng cho các môi trường khác nhau, chẳng hạn như phát triển, thử nghiệm và sản xuất. Bạn có thể xác định hồ sơ trong pom.xml tập tin dưới <hồ sơ> phần. Và -p tùy chọn theo sau là ID hồ sơ sẽ kích hoạt hồ sơ cho bạn.
Định nghĩa thuộc tính
Thuộc tính Maven cho phép bạn xác định các giá trị có thể được sử dụng lại trong suốt pom.xml tài liệu. Những 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 <thuộc tính> phần của bạn pom.xml. Sau khi xác định chúng, bạn có thể sử dụng các thuộc tính này trong suốt quá trình pom.xml tài liệu.
Việc tùy chỉnh quy trình xây dựng trong Maven có thể giúp bạn điều chỉnh dự án của mình cho phù hợp với các môi trường và yêu cầu khác nhau. Bằng cách sử dụng cấu hình, bạn có thể chuyển đổi giữa các thiết lập bản dựng khác nhau và bằng cách sử dụng các thuộc tính, bạn có thể sử dụng lại và quản lý các giá trị một cách hiệu quả.
Phần kết luận
Blog này cung cấp phần giới thiệu toàn diện về Maven đồng thời hướng dẫn bạn từng bước của 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à việc biết cách làm việc với các lệnh này cũng như kiểm soát chúng sẽ giúp chất lượng quá trình phát triển của bạn trở nên tốt hơn.
Câu hỏi thường gặp
Maven dùng để làm gì?
Maven là một công cụ quản lý dự án và tự động hóa xây dựng cho các dự án Java. Nó đơn giản hóa quá trình xây dựng, quản lý các phần phụ thuộc của dự án và cung cấp cấu trúc dự án được tiêu chuẩn hóa. Maven cũng hỗ trợ tài liệu, báo cáo và phân phối dự án.
POM trong Maven là gì?
Maven là một công cụ tự động hóa quá trình xây dựng và quản lý phụ thuộc cho các dự án Java. POM (Mô hình đối tượng dự án) là một 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 xác định các phần phụ thuộc của dự án, plugin, mục tiêu và các cấu hình xây dựng khác.