APACHE MAVEN

Maven là gì?

Maven là một trong những cách thức cai quản dự án khỏe mạnh, cùng với không ít những khả năng như biên dịch project, Xây dựng với phân chia sẽ dependency, documentation etc. Trong thực tiễn maven rất có thể dùng làm cai quản những dự án với ngôn ngữ khác không những là java, mặc dù vậy maven được sử dụng nhiều hơn thế cùng với những dự án công trình java.

Bạn đang xem: Apache maven

Các nhân tài của maven

Maven rất có thể thực hiện rất nhiều tác vụ giúp cho vấn đề thành lập với thống trị dự án công trình công dụng hơn:

Build dự án cùng với mavenThêm các dependency, jar trường đoản cú những dự án công trình khác cùng với maven.Cập nhật những dependency, jar từ bỏ những dự án công trình khác khi chúng được cập nhậtSử dụng maven nhằm build các một số loại đầu ra nhỏng tệp tin JAR, WAR, etc.Dễ dàng tích thích hợp những project lại với nhau.

Maven vận động như thế nào?

*

POM File

POM viết tắt của Project Object Model, là một trong những tệp tin dạng XML chứa những thông báo cấu hình của dự án công trình như dependency, plugin, vị trí chứa mã mối cung cấp, goals etc được Maven sử dụng để biên dịch project. lúc chúng ta triển khai một lệnh trong maven, nó vẫn triển khai gọi tệp tin POM để đưa báo cáo thông số kỹ thuật rồi thực hiện thực hiện.

Dependency & Repository

*

Dependency là những tlỗi viện java phía bên ngoài được thực hiện đến project, còn repository là nơi lưu trữ chúng dưới dạng các tệp JAR.

Local repository chỉ là 1 trong những khu vực tàng trữ các dependency trong laptop cá nhân của họ, nếu như những dependency được sử dụng trong dự án công trình không tìm thấy vào local repository thì Maven vẫn tiến hành download chúng từ kho tàng trữ trung chổ chính giữa của Maven(Central Repositoty) hoặc Remote Repository vào local repository. Ở phần lớn lần sau những dependency sẽ được tìm thấy cùng maven sẽ không phải download chúng lại giúp đổi mới quy trình biên dịch project.

Remote Repository là kho tàng trữ trên máy chủ với Maven cũng rất có thể download những dependency từ phía trên. Remote repository thường xuyên được sử thực hiện cho các dự án công trình nội bộ

Build LifeCycles, Phases và Goals

Một vòng đời (Build life cycle) sẽ có một chuỗi các giai đoạn(phase), mỗi giao đoạn đã bao gồm một chuỗi các mục tiêu(goal)

Build LifeCycle vào maven

Quá trình build project của maven luôn luôn tuân theo một vòng đời rõ ràng nhằm xúc tiến cùng phân phối hận dự án. Chúng ta gồm 3 vòng đời được tích hòa hợp sẵn vào maven:

default: chịu trách rưới nhiệm thực thi dự ánclean: Dọn dẹp project và xoá tất cả những tệp tin được generate nghỉ ngơi phiên bản build trước.site: Xây dựng các tư liệu đến trang web

Mỗi vòng đời cất một chuỗi những quy trình. ví dụ như default build lifecycle cất 23 tiến trình bởi đó là vòng đời chủ yếu vào quá trình build project.

Maven phase

Một giai đoạn(phase) diễn tả 1 quy trình vào 1 build lifecycle của maven. Mỗi phase đang chịu đựng trách nát nhiệm cho 1 công việc cụ thể. Dưới đấy là một vài phare đặc biệt quan trọng vào default build lifecycle:

validate: Kiểm tra toàn bộ các công bố cần thiết đến qúa trình build project.compile: Biên dịch mã codetest-compile: Biên dịch mã nguồn tệp tin demo.test: Chạy unit chạy thử của dự ánpackage: Biên dịch cùng gói gọn mã mối cung cấp thành những file format JAR, WAR etc.integration-test: Chạy integration thử nghiệm.install: Tải những package xuống local repository.deploy: Sao chxay package thanh lịch remote repository.

Các phase được tiến hành theo 1 thứ tự cụ thể, chúng ta có thể thực thi các phase ví dụ cùng với lệnh comand-line:

mvn Note: lúc một phase được xúc tiến, các phare vùng phía đằng trước nó cũng trở nên được thực thi. lấy ví dụ lúc bọn họ thực thi phase install với comand-line: install mvn thì những phase trước nó cũng trở nên được tiến hành nlỗi validate, compile, test-compile etc.

Maven goal

Mỗi phase là một trong những chuỗi các mục tiêu(goal), từng goal Chịu đựng trách rưới nhiệm cho 1 các bước ví dụ. khi một phase được xúc tiến, toàn bộ những goal buộc ràng cùng với phase này sẽ được thực hiện. lấy ví dụ nlỗi những goal sau

compile: complile goal từ bỏ compiler plugin được buộc ràng cùng với complie phase.install: install buộc ràng với install phase.jar, war: được ràng buộc cùng với package phase.

Build profiles

Build profile là 1 tập đúng theo những phương pháp thông số kỹ thuật khác biệt cho phép chúng ta build project trong các môi trường khác nhau nhỏng local environment, Production, tesing etc.

Protệp tin được hướng dẫn và chỉ định vào file POM thông qua các ở trong tính activeProfiles/profiles. Với từng môi trường xung quanh khác biệt họ sẽ sở hữu các quý hiếm cấu hình khác biệt, như cùng với protệp tin là local thì đường dẫn database là PC22322/EXPRESS01 chẳng hạn, còn Profile Production là https://mydatabase etc.

Xem thêm: Hướng Dẫn Mở Đèn Xe Ô Tô - Cách Bật Đèn Pha Ô Tô Cho Người Mới Lái Xe

Build Plugin

Maven plugin là một trong những đội những goal, những goal này sẽ không nhất thiết đề xuất cùng liên kết cho một phase.

lấy một ví dụ, áp dụng Maven FailSafe plugin để chạy integration thử nghiệm, thông số kỹ thuật trong tệp tin pom.xml. FailSafe plugin gồm 2 goal là integration-testverify.

maven-failsafe-plugin $maven.failsafe.version integration-chạy thử verify

Download maven về máy

Maven so với từng hệ quản lý có các biện pháp khác để download, tiếp sau đây mình chỉ liệt kê quá trình phổ biến để install Maven.

Cấu hình JAVA_HOME environment variable.Cấu hình M2_HOME environment variable trỏ đến tlỗi mục tàng trữ Maven được unzip.Cấu hình M2_HOME/bin(%M2_HOME%in mang đến Windows, $M2_HOME/bin mang đến unix).Thêm M2 vào PATH environment variable (%M2%cho Windows,$M2 mang đến unix)Mnghỉ ngơi Comand line kiểm soát cùng với lệnh mvn -version.

Nếu setup thành công xuất sắc, sau khi chạy lệnh mvn -version comvà line sẽ trông như vậy này.

Maven home: /Users/nguyenthanhhai/apache-maven-3.6.3Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jreDefault locale: en_đất nước hình chữ S, platsize encoding: UTF-8OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"Nguyens-MacBook-Pro-2:~ nguyenthanhhai$

File POM trong Maven

POM viết tắt của Project Object Model là một trong những chìa khoá nhằm vận Maven quản lý và vận hành.Filepom.xml cất những thông về liên quan mang lại project như những dependency được áp dụng, nơi lưu trữ mã nguồn, plguin, goal etc. Maven đã phát âm các ban bố cấu hình từ pom.xml sau đó thực hiện triển khai theo các thông số kỹ thuật trong file pom.xml.

lấy ví dụ một file pom.xml cơ bản

4.0.0 com.project.loggerapi LoggerApi 0.0.1-SNAPSHOT org.apache.logging.log4j log4j-api 2.11.0 Các yếu tắc cơ phiên bản trong tệp tin pom.xml nhưng mà bọn họ buộc phải vắt sau:

modelVersion: Phiên bạn dạng của tệp tin POM, từng version của POM tương xứng cùng với những Maven version rõ ràng. POM version 4.0.0 cân xứng cùng với Maven version 2 với 3.groupId: groupId tức thị ID đến dự án công trình nhằm phân minh cùng với toàn bộ các dự án không giống, groupId là độc nhất cùng được thực hiện như là root package. groupId còn hết sức hữu ích, khi dự án của bạn là dự án mã mối cung cấp mngơi nghỉ, có không ít fan tsi gia vào trở nên tân tiến, sử dụng groupId để rõ ràng với các dự án công trình mã nguồn mlàm việc khác. Các chúng ta thấy groupId của mình com.project.loggerapi,tuy thế hãy lưu ý rằng groupId không độc nhất thiết bắt buộc được ngăn cách vày dấu. giữa các trường đoản cú. Thế nhưng nếu bạn đặt được phân làn vị lốt . thì Maven vẫn lưu trữ project của người tiêu dùng theo cấp cho tlỗi mục khớp ứng với từng từ được phân làn, ví dụ groupdId là com.project.loggerapithì project của các bạn sẽ được đặt ở MAVEN_REPO/com/project.loggerapi.artifactId: Được thực hiện để đặt tên đến dự án công trình mà nhiều người đang chế tạo.version: phiên bản của dự án ngày nay.dependencies: Knhì báo các dependency được áp dụng vào dự án công trình.dependency: Khai báo từng dependency được sử dụng vào dự án công trình, mỗi dependency được thể hiện vì chưng 3 thành phần: groupId, artifactId cùng version.

Snapshot trong maven

Snapshot là các dependency (jar file) đã trong quy trình trở nên tân tiến. Thay vày bọn họ update version liên tiếp thì chúng ta có thể thực hiện Snapshot, cho đến khi bao gồm một phiên bản hoàn chỉnh thì hẳn sử dụng version. Để cần sử dụng Snapshot vào Maven bọn họ chỉ cùng sản xuất sau version -SNAPSHOT.Các snapshot version cũng trở thành được cập nhật Khi bọn chúng chuyển đổi, Maven sẽ kiếm tìm kiếm trong Maven repository theo snapshot được hướng đẫn trong file pom.xml. nếu như không kiếm thấy thì Maven vẫn triển khai tải về chúng trường đoản cú kho tàng trữ Maven hoặc remote repo.

1.0-SNAPSHOTSử dụng snapshot vào dependency hệt như sau:

com.jenkov java-web-crawler 1.0-SNAPSHOT

Exclude Dependency

Đôi cơ hội những dependency của dự án xẩy ra xung bất chợt nhưng chúng cần phải chắt lọc tốt nhất một dependency mang đến dự án. Sử dụng exclude dependency nhằm loại trừ các dependency không muốn thực hiện.

example.jaxrs JAX-RS-TOOLKIT 1.0 compile com.fasterxml.jackson.core jackson-core

Tóm lược

Trên đây là bài ra mắt thông thường về Maven nhằm họ rứa sơ tư tưởng. Maven được sử dụng không hề ít trong số dự án java dựa vào tính linc hoạt, tự động hóa, cơ chế quản lý xuất sắc.

Nguồn tđắm đuối khảo

http://tutorials.jenkov.com/maven/maven-tutorial.html#what-is-a-build-tool

https://www.geeksforgeeks.org/introduction-apache-maven-build-automation-tool-java-projects/