Tôi đang đọc tài liệu của Maven và bắt gặp cái tên 'uber-jar'.
Một uber-jar có nghĩa là gì và các tính năng / lợi thế của nó là gì?
Tôi đang đọc tài liệu của Maven và bắt gặp cái tên 'uber-jar'.
Một uber-jar có nghĩa là gì và các tính năng / lợi thế của nó là gì?
Câu trả lời:
Über
là từ Đức cho above
hay over
(nó thực sự là cùng nguồn gốc với tiếng Anh over
).
Do đó, trong bối cảnh này, uber-jar là "over-jar", một cấp độ tăng từ một JAR đơn giản (a) , được định nghĩa là một gói chứa cả gói của bạn và tất cả các phụ thuộc của nó trong một tệp JAR duy nhất. Tên có thể được cho là đến từ cùng ổn định như ultrageek, siêu nhân, siêu không gian và siêu dữ liệu, tất cả đều có ý nghĩa tương tự "vượt quá mức bình thường".
Ưu điểm là bạn có thể phân phối uber-jar của bạn và không quan tâm chút nào hay không phụ thuộc được lắp đặt tại các điểm đến, như uber-jar của bạn thực sự có không phụ thuộc.
Tất cả các phụ thuộc của công cụ của riêng bạn trong uber-jar cũng nằm trong uber-jar đó. Như tất cả các phụ thuộc của những phụ thuộc. Và như thế.
(a) Tôi có lẽ không cần phải giải thích JAR là gì đối với nhà phát triển Java nhưng tôi sẽ bao gồm nó để hoàn thiện. Đó là một kho lưu trữ Java, về cơ bản là một tệp thường chứa một số tệp lớp Java cùng với các tài nguyên và siêu dữ liệu liên quan.
über
và over
là kết quả của một sự thay đổi giọng hát có hệ thống ở Old Đức mà cũng có thể được quan sát thấy trong các cặp từ: geben/give
, leben/live
, haben/have
, heben/heave
và nhiều hơn nữa nhiều.
bình ubar còn được gọi là bình chất béo tức là bình có phụ thuộc.
Có ba phương pháp phổ biến để xây dựng một bình uber:
Định nghĩa Paxdiablo là thực sự tốt.
Ngoài ra, vui lòng xem xét việc cung cấp một uber-jar đôi khi khá thú vị, nếu bạn thực sự muốn phân phối một phần mềm và không muốn khách hàng phải tự tải xuống phụ thuộc. Tóm lại, nếu chính sách của họ không cho phép sử dụng một số thư viện hoặc nếu họ phải ràng buộc một số thành phần phụ (slf4j, libs tuân thủ hệ thống, lib đặc biệt của vòm, ...) thì điều này có thể sẽ gây khó khăn cho họ .
Bạn có thể thực hiện điều đó:
Một giải pháp sạch hơn là cung cấp thư viện thir riêng; maven-bóng-plugin có mô tả cấu hình sẵn cho điều đó. Điều này không phức tạp hơn để làm (với maven và plugin của nó).
Cuối cùng, một giải pháp thực sự tốt là sử dụng Gói OSGI. Có rất nhiều hướng dẫn tốt về điều đó :)
Để biết thêm cấu hình, vui lòng đọc các chủ đề đó:
Một kho lưu trữ Java độc lập, có thể thực hiện được. Trong trường hợp của WildFly Swarm uberjars, đó là một tệp .jar duy nhất chứa ứng dụng của bạn, các phần của WildFly cần để hỗ trợ nó, một kho lưu trữ phụ thuộc Maven bên trong, cộng với một shim để khởi động tất cả. xem cái này
Gầy - CHỈ chứa các bit bạn nhập vào trình soạn thảo mã theo nghĩa đen và KHÔNG CÓ gì khác.
Mỏng - Chứa tất cả các điều trên PLUS các phụ thuộc trực tiếp của ứng dụng vào ứng dụng của bạn (trình điều khiển db, thư viện tiện ích, v.v.).
Rỗng - Nghịch đảo của Thin - Chỉ chứa các bit cần thiết để chạy ứng dụng của bạn nhưng KHÔNG chứa chính ứng dụng đó. Về cơ bản, một máy chủ ứng dụng đã được đóng gói sẵn, mà sau đó bạn có thể triển khai ứng dụng của mình, theo cùng kiểu với các máy chủ ứng dụng Java EE truyền thống, nhưng có những khác biệt quan trọng.
Fat / Uber - Chứa bit bạn tự viết theo nghĩa đen CỘNG phụ thuộc trực tiếp vào ứng dụng của bạn PLUS các bit cần thiết để chạy ứng dụng của bạn trên ứng dụng của riêng bạn.
Nguồn: Bài viết từ Dzone
Đăng lại từ: https://stackoverflow.com/a/57592130/9470346