Như mình đã nói trong bài viết trước, Nexus Repository Manager là một công cụ giúp chúng ta có thể tạo ra các Repository dùng để quản lý các thư viện dependencies mà chúng ta cần sử dụng trong các dự án. Đối với Java thì chúng ta thường sử dụng Maven Repository để quản lý các dependencies. Trong bài viết này, mình sẽ hướng dẫn các bạn làm thế nào để tạo Maven Repository trong Nexus Repository Manager các bạn nhé!
Đầu tiên, các bạn cần đăng nhập vào tài khoản admin và di chuyển tới phần cấu hình “Server administrator and configuration”:
Trong phần menu bên trái, các bạn hãy click vào menu item “Repositories” các bạn nhé!
Ở đây, các bạn sẽ thấy nhiều Repository mặc định mà Nexus Repository Manager đã tạo sẵn cho chúng ta bao gồm cả những Maven Repository như:
- maven-central: http://localhost:8081/repository/maven-central/
- maven-public: http://localhost:8081/repository/maven-public/
- maven-releases: http://localhost:8081/repository/maven-releases/
- maven-snapshots: http://localhost:8081/repository/maven-snapshots/
Trong các thông tin ứng với mỗi Maven Repository mà mình liệt kê ở trên, các bạn cần chú ý đến cột Repository Type. Đây là cột sẽ quy định cách mà một Repository sẽ hoạt động như thế nào, bao gồm: proxy repository, hosted repository và repository group.
Sự khác nhau của những Repository Type này là:
Proxy repository là những repository đóng vai trò là những proxy giúp chúng ta có thể access tới những public repository khác bên ngoài, ví dụ như https://repo1.maven.org/maven2/.
Khi chúng ta request một dependency tới một proxy repository, đầu tiên Maven Repository sẽ verify xem dependency mà chúng ta cần đã có sẵn ở local chưa, nếu chưa thì nó sẽ request tới remote repository mà nó đang proxy để lấy và lưu trữ lại dependency đó. Trong những lần request cho dependency này, Maven Repository chỉ cần lấy ở local rồi trả về không cần phải request tới remote repository nữa. Điều này giúp chúng ta tiết kiệm băng thông, thời gian và nếu chẳng may chúng ta không access được tới remote repository thì cũng còn có cái để sử dụng.
Hosted repository là những repository sẽ chứa những dependency internal, thuộc về dự án, không public ra ngoài.
Điều này sẽ dễ hiểu nếu dự án của bạn có những dependency cần cho tất cả mọi người trong team thì chúng ta có thể public dependency này lên hosted repository, sau đó mọi người có thể request tới để sử dụng.
Đối với hosted repository, các bạn cần phân biệt ra 2 dạng của dependency là release hay snapshot, nói nôm na thì release là những dependency đã được approve để sử dụng với một version nhất định, còn snapshot chỉ là version tạm thời, chưa được test và verify kỹ càng. Dependency với release version sẽ không thể lưu trữ trong snapshot repository và ngược lại.
Lát nữa đây các bạn sẽ thấy rõ sự phân biệt này khi chúng ta đi vào tạo mới một Maven Repository, các bạn nhé!
Repository group là collection của những repository khác, nơi mà các bạn có thể combine nhiều repository với type khác nhau vào trong một repository duy nhất.
Điều này giúp cho các bạn developer đơn giản hoá Repository URL mà họ cần sử dụng.
OK, bây giờ chúng ta hãy thử tạo mới một Maven Repository xem sao các bạn nhé!
Trong trang Repositories, các bạn hãy click vào button “Create repository”:
Như các bạn thấy, Nexus Repository Manager hỗ trợ cho chúng ta rất nhiều loại Repository khác nhau. Đối với Maven Repository, chúng ta có thể tạo 3 loại repository với Repository Type như mình đã đề cập ở trên: group, hosted và proxy. Các bạn có thể chọn type mà mình cần, trong ví dụ này, mình sẽ chọn type là hosted bằng cách nhấn vào item “maven2 (hosted)”.
Ở đây, chúng ta cần cấu hình các thông tin sau:
Name: tên của repository, các bạn hãy điền tên theo nhu cầu của mình.
Online “If checked, the repository accepts incoming requests” cho phép chúng ta có thể disable hoặc enable repository này.
Version policy: chúng ta có 3 loại là release, snapshot và mixed. Release và snapshot thì như mình đã đề cập ở trên, còn mixed thì cho phép chúng ta lưu trữ cả release và snapshot.
Layout policy: tuân theo Maven repository format hay là không? Strict là tuân thủ hoàn toàn, còn permissive thì cho phép vi phạm. 🙂 Nên chọn strict nhé các bạn!
Về phần Storage, các bạn để default nhé.
Deployment policy thì chúng ta có thể cấu hình cho việc deployment, cho phép re-deploy hay không hay chỉ là read-only đối với repository này mà thôi.
Trong ví dụ này, mình cấu hình như sau:
Sau khi đã cấu hình xong thì các bạn nhấn nút “Create repository” để hoàn thành nhé!
Kết quả: