Vì vậy, tôi đã tìm kiếm cao và thấp cho câu trả lời cho điều này và rõ ràng là không tìm thấy câu trả lời thỏa đáng.Cập nhật một tệp bên trong một JAR trong một thư mục cụ thể với lệnh jar
Vấn đề là tôi muốn cập nhật JAR (hoặc bất kỳ tệp nào cho vấn đề đó) bên trong JAR, nhưng tệp được cho là nằm bên trong cấu trúc thư mục mà tôi muốn tránh sao chép bên ngoài JAR để tôi có thể cập nhật nó.
Ví dụ:
Foo.jar (root directory)
/
|->/folder1
|
|->/folder2
|
|->/foo
|
|-->/bar
|
|---->/baz
|
|------>file_to_update.jar
Vì vậy, nếu tôi muốn cập nhật này bằng cách sử dụng jar lệnh, tôi sẽ phải đầu tiên tạo ra các cấu trúc thư mục giống nhau ngoài JAR và sau đó làm
jar -uf Foo.jar -C foo/bar/baz/file_to_update.jar
Tuy nhiên tôi muốn tránh tạo cấu trúc thư mục này vì một số tệp nhất định có thể khá sâu và cũng vì tôi có thể cần phải cập nhật các tệp đã chọn trên JAR vùng chứa, vì vậy tôi không muốn tạo nhiều thư mục với một đặc tả cấu trúc ific chỉ để lệnh jar có thể cập nhật chúng.
Để đặt theo cách khác, tôi muốn nói lệnh jar để cập nhật tệp đích cụ thể bên trong thư mục đích cụ thể, sử dụng tệp nguồn cụ thể bên trong thư mục nguồn cụ thể.
I.e. một cái gì đó như
jar -uf Foo.jar -sourceFile /x/y/z/filetoupdate -destFile /a/b/c/filetoupdate
(Tôi biết cú pháp này không hoạt động, nó chỉ là minh họa những gì tôi cần).
Việc này có thể thực hiện được không? Nó sẽ tấn công tôi rất kỳ quặc đến nỗi tôi hoàn toàn cần bắt chước toàn bộ cấu trúc thư mục khi lệnh jar có thể tìm thấy kết quả phù hợp cho nó hoặc thứ gì đó, vì tôi có thể cần phải cập nhật tệp bên trong cấu trúc thư mục là 100 thư mục sâu. Điều đó sẽ quá phức tạp để sinh sản chỉ để cập nhật tệp.
Ngoài ra, tôi biết một tiện ích ZIP thông thường có thể được sử dụng, nhưng tiện ích tôi có sẵn trong Linux không cập nhật tệp ngay cả khi nó đã làm (khi mở lại bình, nó có phiên bản cũ nguyên vẹn) và ngay bây giờ tôi không thể tìm kiếm một thứ khác (chính sách của công ty, không có thời gian, vấn đề kiểm tra, bạn đặt tên cho nó).
Cuối cùng, nếu tôi có thể thực hiện điều này từ dòng lệnh, điều đó có nghĩa là tôi có thể tạo tệp lô để cập nhật nhiều tệp cụ thể mà không phải tạo cấu trúc thư mục.
Tôi quên nói rằng tôi cũng muốn tránh phải mở, cập nhật, mở lại toàn bộ thứ, vì JAR này có thể lên tới 2GB vì vậy phải mất một thời gian để thực hiện điều này, về cơ bản, thêm một chút tệp tài nguyên cho JAR khổng lồ của tôi.
Bất kỳ trợ giúp nào về điều này được đánh giá cao!
Bạn đề cập rằng bạn đang trên Linux, bạn đã xem xét gói zip chưa? '' 'man zip''' cho hướng dẫn. Nó dường như chỉ là công cụ bạn đang tìm kiếm, và ghép nối nó với một kịch bản để tự động hóa. – TomJ