2009-05-19 26 views
11

ứng dụng của tôi cần nhiều lọ để hoạt động. Vì nó là một ứng dụng máy tính để bàn, tôi không thể giữ người dùng chịu trách nhiệm cài đặt. Vì vậy, trong kịch bản xây dựng của tôi tôi giải nén các nội dung jars vào thư mục xây dựng của tôi xóa các tập tin manifest, biên dịch phần mềm của tôi và jar nó một lần nữa. Tất cả mọi thứ hoạt động như nó phải là câu hỏi của tôi là có bất kỳ tác dụng phụ lâu dài cho quá trình này?Sáp nhập nhiều lọ vào một bình đơn

Trả lời

12

Trước đây, có các JAR có nội dung lạ (như trình điều khiển DB2 có chứa com.ibmcom.IBM; sau khi giải nén trong hệ thống tệp Windows, hai gói đó sẽ được hợp nhất).

Vấn đề duy nhất bạn cần biết là các lọ đã ký và các tệp khác trong META-INF có thể có cùng tên trong nhiều nguồn JAR.

Một giải pháp đơn giản cho tất cả các vấn đề này là sử dụng One-JAR. Nó cho phép bao bọc một số JAR vào một mà không giải nén chúng, đầu tiên. Và đọc câu trả lời này: Easiest way to merge a release into one JAR file

1

Nếu một số lọ được ký, bạn sẽ mất chữ ký bằng cách giải nén/đóng gói lại.

0

Vâng, bạn đang vứt bỏ MANIFEST của các lọ bên thứ ba của bạn, để có thể gây ra vấn đề cho bạn. Ví dụ bạn có thể gây ra các vấn đề bảo mật bằng cách vứt bỏ thuộc tính "Sealed".

Tại sao không chỉ tạo trình cài đặt đơn giản và tập lệnh để khởi chạy ứng dụng của bạn để đặt CLASSPATH chính xác?

1

Nếu bạn muốn người dùng cuối không khởi động chương trình có nhiều phụ thuộc jar bạn có thể muốn xem Launch4j hoặc Jsmooth (Tôi thích Launch4j). Cả hai đều là các chương trình tạo các tệp thi hành bao bọc các jar (s) và JRE với nhau để cho người dùng cuối nó xuất hiện không khác gì bất kỳ tệp thực thi nào khác.

2

Một tùy chọn tuyệt vời khác là ProGuard, có thể cũng thu nhỏ và/hoặc làm mờ mã quá.

1

Nếu nền tảng mục tiêu chính của bạn là Windows desktop, sau đó bạn cũng có thể xem xét việc tạo ra một bản exe Windows từ các lọ của ứng dụng của bạn

0

One-JAR sẽ thực hiện công việc, và có một phiên bản mới (0,97) mà hỗ trợ các khung công tác như Spring và Guice, mà người dùng hiện đang đóng gói vào lưu trữ One-JAR. Ference Hechler cũng đã làm một số công việc tuyệt vời bên trong Eclipse với trình thủ thuật xuất khẩu Eclipse: chúng tôi đã làm việc cùng nhau trên FatJar/One-JAR mà từ đó công việc Eclipse phát triển và tôi có thể giới thiệu nó như một cách tiếp cận, mặc dù tôi không biết nó xử lý tốt như thế nào trong các khung công tác.

4

Giải pháp đơn giản hơn (IMO) đang sử dụng Maven's assembly plugin, cũng được mô tả trong một trong các câu trả lời cho một câu hỏi khác được liên kết trong một số previous Q&A. Điều này được cung cấp bạn đang sử dụng Maven (là một công cụ được đề xuất bởi chính quyền của nó) như một công cụ xây dựng.

Các vấn đề liên quan