2012-04-26 36 views
5

Khi tôi đang xây dựng một gói, tôi cần nhúng một vài lọ (http-core và http-client) vào trường hợp của mình. Sử dụng maven với plugin flex Tôi nhận được danh sách nhập khẩu khổng lồ - một số trong những thứ mà tôi không cần. Ngay bây giờ tôi chỉ phủ nhận các gói mà tôi không cần trong số <Import-Package>, nhưng tôi cũng có thể sử dụng Import-Package: resolution:=optional. Tôi đã tự hỏi những gì là cách ưa thích và những lợi thế/bất lợi của một trong hai cách tiếp cận là gì?Khi nhúng jar vào gói OSGi, bỏ qua hoặc loại bỏ tùy chọn?

+1

Tại sao không chỉ đơn giản triển khai các lọ cần thiết của bạn dưới dạng bó và thêm các phụ thuộc thích hợp cho riêng bạn thay vì nhúng. – Robin

Trả lời

5

Thật không may mọi người bao gồm rất nhiều "tốt để có các bộ phận" (thường được gọi là utils) mà gây ra các nhập khẩu. Rất thường thủ phạm là riêng biệt của mã lõi mà bạn muốn sử dụng. Nếu bạn sử dụng bndtools thì bạn có thể dễ dàng kiểm tra cách phụ thuộc chạy.

Trong bndtools và maven bạn sử dụng bnd, và bnd làm cho nó rất dễ dàng để chỉ sao chép một phần của JAR vào gói của bạn. Bằng cách đó bạn có thể giảm thiểu sự phụ thuộc. Chỉ cần sử dụng Private-Package để sao chép các gói mà bạn thực sự cần và sau đó nhìn vào hàng nhập khẩu. Nếu bạn nhập một cái gì đó mà bạn nghĩ rằng bạn cần, thêm nó vào Private-Package (trong bndtools bạn có thể làm điều này với kéo và thả).

Cuối cùng, bạn có thể loại bỏ nhiều lần nhập không cần thiết. Tuy nhiên, thường có một số trái. Trong trường hợp đó trang trí chúng với độ phân giải: = tùy chọn trong câu lệnh Import-Package:

Import-Package: com.oracle.whatever; resolution:=optional, * 

Đừng quên * ở cuối.

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