Maven - Kho
Kho lưu trữ Maven là gì?
Theo thuật ngữ của Maven, kho lưu trữ là một thư mục nơi lưu trữ tất cả các lọ dự án, lọ thư viện, plugin hoặc bất kỳ hiện vật cụ thể nào khác của dự án và có thể được sử dụng bởi Maven dễ dàng.
Kho lưu trữ Maven có ba loại. Hình minh họa sau đây sẽ cung cấp một ý tưởng liên quan đến ba loại này.
- local
- central
- remote
Kho lưu trữ cục bộ
Kho lưu trữ cục bộ Maven là vị trí thư mục trên máy của bạn. Nó được tạo khi bạn chạy bất kỳ lệnh maven nào lần đầu tiên.
Kho lưu trữ cục bộ Maven giữ tất cả các phụ thuộc dự án của bạn (lọ thư viện, lọ plugin, v.v.). Khi bạn chạy bản dựng Maven, thì Maven sẽ tự động tải tất cả các lọ phụ thuộc vào kho lưu trữ cục bộ. Nó giúp tránh tham chiếu đến các phụ thuộc được lưu trữ trên máy từ xa mỗi khi xây dựng một dự án.
Kho lưu trữ cục bộ Maven theo mặc định được Maven tạo trong thư mục% USER_HOME%. Để ghi đè vị trí mặc định, hãy đề cập đến một đường dẫn khác trong tệp Maven settings.xml có sẵn tại thư mục% M2_HOME% \ conf.
<settings xmlns = "http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/MyLocalRepository</localRepository>
</settings>
Khi bạn chạy lệnh Maven, Maven sẽ tải các phần phụ thuộc vào đường dẫn tùy chỉnh của bạn.
Kho trung tâm
Kho lưu trữ trung tâm Maven là kho lưu trữ do cộng đồng Maven cung cấp. Nó chứa một số lượng lớn các thư viện thường được sử dụng.
Khi Maven không tìm thấy bất kỳ sự phụ thuộc nào trong kho lưu trữ cục bộ, nó bắt đầu tìm kiếm trong kho lưu trữ trung tâm bằng cách sử dụng URL sau: https://repo1.maven.org/maven2/
Các khái niệm chính của kho lưu trữ Trung tâm như sau:
- Kho này được quản lý bởi cộng đồng Maven.
- Nó không bắt buộc phải được cấu hình.
- Nó yêu cầu truy cập internet để tìm kiếm.
Để duyệt nội dung của kho lưu trữ maven trung tâm, cộng đồng maven đã cung cấp một URL - https://search.maven.org/#browse. Sử dụng thư viện này, một nhà phát triển có thể tìm kiếm tất cả các thư viện có sẵn trong kho lưu trữ trung tâm.
Kho lưu trữ từ xa
Đôi khi, Maven cũng không tìm thấy sự phụ thuộc được đề cập trong kho lưu trữ trung tâm. Sau đó, nó dừng quá trình xây dựng và xuất thông báo lỗi tới bảng điều khiển. Để ngăn chặn tình huống đó, Maven đưa ra khái niệmRemote Repository, là kho lưu trữ tùy chỉnh của riêng nhà phát triển chứa các thư viện bắt buộc hoặc các lọ dự án khác.
Ví dụ: sử dụng POM.xml được đề cập bên dưới, Maven sẽ tải xuống phụ thuộc (không có sẵn trong kho lưu trữ trung tâm) từ Kho lưu trữ từ xa được đề cập trong cùng một pom.xml.
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>com.companyname.common-lib</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
<repositories>
<repository>
<id>companyname.lib1</id>
<url>http://download.companyname.org/maven2/lib1</url>
</repository>
<repository>
<id>companyname.lib2</id>
<url>http://download.companyname.org/maven2/lib2</url>
</repository>
</repositories>
</project>
Trình tự tìm kiếm phụ thuộc Maven
Khi chúng tôi thực hiện các lệnh xây dựng Maven, Maven bắt đầu tìm kiếm các thư viện phụ thuộc theo trình tự sau:
Step 1 - Tìm kiếm phụ thuộc trong local repository, nếu không tìm thấy thì chuyển sang bước 2 khác thực hiện các xử lý tiếp theo.
Step 2 - Tìm kiếm phụ thuộc trong kho lưu trữ trung tâm, nếu không tìm thấy và kho lưu trữ / kho lưu trữ từ xa được / được đề cập thì chuyển sang bước 4. Nếu không nó sẽ được tải xuống kho lưu trữ cục bộ để tham khảo trong tương lai.
Step 3 - Nếu kho lưu trữ từ xa chưa được đề cập, Maven chỉ cần dừng xử lý và ném lỗi (Không thể tìm thấy phụ thuộc).
Step 4- Tìm kiếm phụ thuộc trong kho lưu trữ từ xa hoặc các kho lưu trữ, nếu được tìm thấy thì nó được tải xuống kho lưu trữ cục bộ để tham khảo trong tương lai. Nếu không, Maven ngừng xử lý và ném lỗi (Không thể tìm thấy phần phụ thuộc).