CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN Maven là gì? Khái niệm + chức năng + giới thiệu về kho + giải thích chi tiết về các lệnh phổ biến của Maven được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, vui lòng thích nó.
Dòng Maven 1.

1. Maven là gì?
Maven là một công cụ quản lý dự án bao gồm mô hình đối tượng. Một bộ tiêu chuẩn, một hệ thống quản lý sự phụ thuộc. và được sử dụng để chạy các mục tiêu và logic của plugin được xác định trong các giai đoạn vòng đời. Chức năng cốt lõi của Maven là mô tả hợp lý các phụ thuộc giữa các dự án. Nói một cách đơn giản, đó là lấy gói jar thông qua cấu hình tệp pom.xml mà không cần thêm gói jar theo cách thủ công. Tôi sẽ mô tả gói pom.xml này sau, nhưng những người đã học Maven hẳn sẽ rất quen thuộc với nó. Bản chất của nó là lấy gói jar bằng cách cấu hình pom.xml. Tất nhiên, điều này dựa trên tiền đề là dự án phải là dự án Maven. Vậy dự án Maven là gì? Dự án Maven là gì? Chúng ta hiểu Maven project theo cách này, tức là một lớp Maven được wrap trên Java project và Web project. Về bản chất, Java project vẫn là Java project, Web project vẫn là Web project, nhưng sau khi được wrap bằng Maven, chúng ta có thể sử dụng một số hàm do Maven cung cấp, tức là thêm jar package thông qua pom.xml giống như bọc một lớp bột mì lên con gà mật ong và chiên nó thành gà rán, nhưng nó vẫn là gà.


2. Maven có thể giải quyết những vấn đề nào?
Trước khi nghĩ về những vấn đề mà Maven có thể giải quyết, hãy cùng nghĩ về những vấn đề mà chúng ta thường gặp phải trong quá trình phát triển. 1. Chúng ta cần tham chiếu đến nhiều gói jar khác nhau, đặc biệt là đối với các dự án lớn, thường tham chiếu đến hàng chục hoặc thậm chí hàng trăm gói jar. Mỗi lần sử dụng một gói jar, cần phải đưa thủ công vào thư mục dự án và thường gặp phải nhiều xung đột giữa các gói jar và xung đột phiên bản khiến mọi người phát điên. 2. Chúng tôi đã làm việc chăm chỉ để viết tệp Java, nhưng máy tính ngốc nghếch chỉ hiểu được 0 và 1 không thể đọc được nó, vì vậy nó cần được biên dịch thành mã byte nhị phân. Ít nhất thì bây giờ công việc này có thể được thực hiện bằng nhiều công cụ phát triển tích hợp khác nhau. Eclipse, IDEA, v.v. có thể biên dịch mã theo thời gian thực. Tất nhiên, nếu bạn thấy cuộc sống quá dài, bạn cũng có thể sử dụng Notepad để nhập mã, sau đó sử dụng lệnh javac để biên dịch từng mã một để giải trí cho máy tính. 3. Không có mã nào trên thế giới này không có lỗi. Máy tính cũng giống như con người, luôn thích phụ nữ đẹp và đàn ông đẹp trai. Để theo đuổi tính đẹp và giảm lỗi, sau khi viết code, chúng ta cũng cần viết một số unit test rồi chạy từng cái một để kiểm tra chất lượng code. 4. Dù code có đẹp đến đâu thì vẫn cần phải bán. Sau đó, chúng ta sẽ cần tích hợp mã với nhiều tệp cấu hình và tài nguyên khác nhau, hoàn thiện gói và nếu đó là một dự án web, chúng ta cũng sẽ cần xuất bản nó lên máy chủ để mọi người khám phá. Các vấn đề mà Maven giúp chúng ta giải quyết Maven đã giải quyết tất cả các vấn đề trên cho chúng ta. Đúng vậy, Maven có thể giúp chúng ta 1. Xây dựng dự án, 2. Quản lý jar, 3. Biên dịch mã, 4. Tự động chạy thử nghiệm đơn vị, 5. Đóng gói, 6. Tạo báo cáo, 7. Triển khai dự án và tạo trang web. Bạn có cảm thấy giống Tôn Ngộ Không khi nhận được cây gậy vàng không?

3. Tiếp theo, tôi sẽ đưa ra một ví dụ để bạn thấy được chức năng của Maven.

Trước đó, chúng ta đã vượt qua dự án web stage. Để có thể chạy dự án, chúng ta phải thêm một số gói jar mà dự án phụ thuộc vào dự án, nếu không dự án sẽ không thể chạy. Nếu có hơn một chục dự án có cùng kiến trúc, thì chúng ta cần sao chép gói jar này vào mười dự án khác nhau. Chúng ta hãy xem xét quy mô của dự án CRM bằng cách sử dụng dự án CRM truyền thống.

Xây dựng bằng Maven.

4. Quản lý sự phụ thuộc của Maven.
Tại sao thư mục lại nhỏ như vậy sau khi sử dụng Maven? Trên thực tế, chúng tôi đã đề cập đến điều này trước đây, tức là cấu hình các phụ thuộc bằng cách cấu hình các tệp pom.xml. Một trong những tính năng cốt lõi của Maven là quản lý phụ thuộc. Khi chúng ta tham gia vào các dự án đa mô-đun (bao gồm hàng trăm mô-đun hoặc dự án con), việc quản lý các phụ thuộc trở thành một nhiệm vụ cực kỳ khó khăn. Maven cho thấy khả năng kiểm soát cao của mình trong việc xử lý tình huống này. Trong các dự án web truyền thống, chúng ta phải sao chép các gói jar mà dự án phụ thuộc vào vào dự án, điều này làm cho dự án trở nên rất lớn. Vậy Maven giảm kích thước của dự án thông qua các hoạt động như thế nào?

Từ sơ đồ, chúng ta có thể thấy rằng dự án Maven không trực tiếp nhập gói jar vào dự án mà thêm tọa độ của gói jar cần thiết vào pom.xml, điều này tránh việc đưa jar trực tiếp vào. Khi cần gói jar, chỉ cần tìm tệp pom.xml, sau đó sử dụng tọa độ trong pom.xml để tìm các gói jar này trong một kho lưu trữ chuyên dụng để lưu trữ các gói jar theo tọa độ, sau đó chạy các gói jar này. Khi thấy điều này, độc giả có thể có câu hỏi 1. Kho lưu trữ gói jar trông như thế nào? Chúng tôi sẽ giải thích từng cái một sau. Kho hàng cũng được chia thành nhiều loại. 2. Phương pháp tìm jar bằng cách đọc tọa độ pom.xml có làm chậm tốc độ không? Kết quả là, các giải pháp này không khả thi. Tọa độ của gói jar cần giới thiệu được cấu hình trong tệp pom.xml, sau đó tọa độ được đọc và gói jar được tải từ kho. Theo cách này, chúng ta có thể sử dụng trực tiếp gói jar. Để giải quyết vấn đề tốc độ chậm trong quá trình này, Maven cũng có khái niệm về chỉ mục. Bằng cách thiết lập chỉ mục, tốc độ tải gói jar có thể được cải thiện đáng kể, khiến chúng ta nghĩ rằng tốc độ của gói jar về cơ bản giống với tốc độ đọc gói jar từ tệp dự án cục bộ. Quá trình này giống như tra cứu từ điển. Để tìm nội dung nhanh hơn, thư mục trước cuốn sách giống như một chỉ mục. Với thư mục này, chúng ta có thể dễ dàng tìm thấy nội dung. Tương tự như vậy, với một chỉ mục trong kho lưu trữ Maven, chúng ta có thể nhanh chóng tìm thấy gói jar.
5. Khái niệm về kho hàng.
Kho là nơi lưu trữ gói jar, tức là, như chúng tôi đã nói trước đó, bằng cách thiết lập chỉ mục trong pom.xml để tìm gói jar trong kho. Kho được chia thành: kho cục bộ, kho của bên thứ ba và kho trung tâm.
5.1 Kho lưu trữ cục bộ được sử dụng để lưu trữ các plugin và gói jar được tải xuống từ kho lưu trữ từ xa hoặc kho lưu trữ trung tâm. Dự án sử dụng một số plugin hoặc gói jar để tìm kiếm kho lưu trữ cục bộ trước. Vị trí kho lưu trữ cục bộ mặc định là ${user.dir}/.m2/repository, trong đó ${user.dir} biểu thị thư mục người dùng Windows.

5.2 Kho lưu trữ của bên thứ ba d Kho lưu trữ của bên thứ ba, còn được gọi là kho lưu trữ trung tâm nội bộ, còn được gọi là máy chủ riêng: thường do chính công ty thiết lập, chỉ để chia sẻ nội bộ trong công ty, có thể sử dụng để cộng tác và lưu trữ nội bộ, cũng có thể được sử dụng làm bộ nhớ đệm hình ảnh thư viện công cộng, để giảm tần suất truy cập và tải xuống bên ngoài. Để giảm tần suất truy cập vào kho lưu trữ trung tâm, máy chủ riêng có thể sử dụng mạng cục bộ và kho lưu trữ trung tâm phải sử dụng mạng bên ngoài. Có nghĩa là, hầu hết các công ty sẽ tạo một kho của bên thứ ba như vậy để đảm bảo rằng khi dự án được phát triển, các jar cần thiết cho dự án sẽ được lấy từ kho và phiên bản của mọi người đều giống nhau. Lưu ý: Để kết nối với máy chủ riêng, cần phải cấu hình riêng. Nếu không có máy chủ riêng nào được cấu hình, theo mặc định, máy chủ đó sẽ không được sử dụng.
5.3 Central Warehouse Phần mềm Maven có địa chỉ kho từ xa tích hợp sẵn là http://repo1.maven.org/maven2. Đây là kho trung tâm, phục vụ toàn bộ Internet. Nó được chính nhóm Maven bảo trì và lưu trữ một gói jar rất đầy đủ, chứa hầu hết các thành phần dự án nguồn mở phổ biến trên thế giới.
Quá trình lấy gói jar là tìm kiếm từ kho cục bộ trước. Nếu kho cục bộ không có gói jar, nếu máy chủ riêng được cấu hình, nó sẽ được tìm kiếm từ máy chủ riêng. Nếu nó không có trong máy chủ riêng, nó sẽ được tìm kiếm từ kho trung tâm và sau đó được tải xuống kho cục bộ. Lần sử dụng tiếp theo, nó có thể được tìm kiếm trực tiếp từ kho cục bộ. Nếu không có máy chủ riêng nào được cấu hình, nó sẽ được tìm kiếm trực tiếp từ kho trung tâm.

6.Cấu trúc dự án Java Maven.
Cấu trúc thư mục dự án Maven.

Có một thư mục đích trong hình vì dự án Java được biên dịch và mã nguồn trong src/main/java sẽ được biên dịch thành các tệp .class và đưa vào thư mục đích. Target là thư mục đầu ra. Là một dự án Maven, cần có thư mục src và pom.xml. Sau khi vào thư mục src, chúng ta thấy cấu trúc thư mục của nó như sau:

Tên dự án--cấu hình lõi pom.xml, gốc dự án--src --main --java thư mục mã nguồn java --resources thư mục tệp cấu hình java --test --java thư mục mã nguồn thử nghiệm --resource thư mục cấu hình thử nghiệm.
7. Các lệnh thường dùng của Maven.
7.1 compile compile là lệnh biên dịch của dự án Maven. Chức năng của nó là biên dịch các tệp trong src/main/java thành các tệp lớp và xuất chúng ra thư mục đích. 7.2 test test là lệnh kiểm tra của dự án Maven, lệnh này sẽ thực thi lớp kiểm tra đơn vị trong src/test/java. Chạy mvn test trong cmd để thực thi lớp kiểm tra đơn vị trong src/test/java. Hình sau đây cho thấy kết quả kiểm tra. Một trường hợp kiểm tra đã được chạy và tất cả đều thành công. 7.3 clean clean là lệnh dọn dẹp của dự án Maven. Thực hiện clean sẽ xóa thư mục đích và nội dung của nó. 7.4 package package là lệnh đóng gói của dự án Maven. Đối với dự án Java, thực hiện package để đóng gói thành gói jar và đối với dự án web, thực hiện package để đóng gói thành gói war. 7.5 install install là lệnh cài đặt dự án Maven. Thực hiện install để đóng gói Maven vào gói jar hoặc gói war và xuất bản nó lên kho lưu trữ cục bộ. Từ kết quả chạy, ta có thể thấy khi thực hiện các lệnh sau thì các tiến trình hoạt động trước đó cũng sẽ tự động được thực hiện.
8.Vòng đời của Maven.
Maven chia quá trình xây dựng dự án thành ba vòng đời độc lập và ba tập hợp được đề cập ở đây là độc lập với nhau. Ba tập hợp này là: Clean Lifecycle: Thực hiện một số công việc dọn dẹp trước khi xây dựng thực tế. Vòng đời mặc định: Phần cốt lõi của bản dựng, bao gồm biên dịch, thử nghiệm, đóng gói, triển khai, v.v. Vòng đời trang web: Tạo báo cáo dự án, trang web và xuất bản trang web.
9. Mô hình khái niệm của Maven.
Maven bao gồm một mô hình đối tượng dự án, một bộ tiêu chuẩn, vòng đời dự án, một hệ thống quản lý phụ thuộc và logic để chạy các mục tiêu của plugin được xác định trong các giai đoạn vòng đời.

9.1 Mô hình đối tượng dự án: Một dự án Maven có tệp pom.xml. Tệp pom.xml xác định tọa độ của dự án, các phụ thuộc của dự án, mục tiêu của plug-in thông tin dự án, v.v.
9.2 Hệ thống quản lý phụ thuộc: Sử dụng quản lý phụ thuộc của Maven để quản lý thống nhất các gói jar mà dự án phụ thuộc vào. Ví dụ, nếu dự án phụ thuộc vào junit4.9, bạn có thể sử dụng junit4.9 bằng cách định nghĩa sự phụ thuộc của junit4.9 trong pom.xml. Sau đây là định nghĩa sự phụ thuộc của junit4.9:
9.3 Vòng đời của một dự án Maven được sử dụng để hoàn thành việc xây dựng dự án. Xây dựng dự án bao gồm: dọn dẹp, biên dịch, triển khai và các quy trình khác. Maven chuẩn hóa các quy trình này thành một vòng đời. Sau đây là các giai đoạn của vòng đời.

Maven có thể triển khai từng quy trình của vòng đời trên bằng cách thực hiện một số lệnh đơn giản, chẳng hạn như thực hiện lệnh mvn compile để biên dịch và thực hiện lệnh mvn clean để dọn dẹp.
9.4 Một tập hợp các tập hợp chuẩn Maven định nghĩa toàn bộ quy trình quản lý dự án là một tập hợp các tập hợp chuẩn. Ví dụ, các dự án được xây dựng thông qua Maven có cấu trúc thư mục chuẩn, các giai đoạn vòng đời chuẩn và các định nghĩa tọa độ chuẩn để quản lý phụ thuộc.
9.5 Mục tiêu của plugin.
Maven quản lý vòng đời dự án dựa trên các plugin.
10. Sử dụng ý tưởng để phát triển dự án meven.
Đây chỉ là một vài cấu hình tham số đơn giản và không có nhiều điều để nói, vì vậy tôi sẽ chỉ đưa ra sơ đồ luồng.
1. .

2. .

3. .



6. .

7. .
8. .

9. .

10. .

11. .

11. Làm thế nào để có được gói jar.
Truy cập trang web chính thức của kho dữ liệu trung tâm để tải xuống URL: http://search.maven.org/ http://mvnrepository.com/.
Hình ảnh ví dụ:

Trên đây là một số kiến thức cơ bản về Maven. Sau này mình sẽ cập nhật thêm những kiến thức nâng cao về Maven mà chúng ta thường sử dụng trong các dự án của mình.
Đây là phần cuối của bài viết này về Maven là gì? Khái niệm + chức năng + giới thiệu kho + lệnh chung của Maven. Để biết thêm các lệnh chung liên quan đến Maven, vui lòng tìm kiếm các bài viết trước của tôi hoặc tiếp tục duyệt các bài viết liên quan sau. Tôi hy vọng bạn sẽ ủng hộ tôi trong tương lai! .
Liên kết gốc: https://www.cnblogs.com/pjhaymy/p/13658218.html.
Cuối cùng, bài viết này về Maven là gì? Khái niệm + chức năng + giới thiệu kho + giải thích chi tiết về các lệnh phổ biến kết thúc tại đây. Nếu bạn muốn biết thêm về Maven là gì? Khái niệm + chức năng + giới thiệu kho + giải thích chi tiết về các lệnh phổ biến, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!