2012-04-26 15 views
5

Kiedy buduję pakiet, muszę w moim przypadku osadzić kilka słoików (rdzeń http i klient http). Używając maven z wtyczką flex dostajemy ogromną listę importu - niektóre rzeczy, których nie potrzebuję. W tej chwili właśnie neguję pakiety, których nie potrzebuję w <Import-Package>, ale mogę też użyć Import-Package: resolution:=optional. Zastanawiałem się, jaki jest preferowany sposób i jakie są zalety/wady obu podejść?Po osadzeniu słoika w pakiecie OSGi, zignorować lub opcjonalne rozwiązanie?

+1

Dlaczego nie po prostu wdrożyć wymagane słoiki jako paczki i dodać odpowiednie zależności do własnych zamiast osadzania. – Robin

Odpowiedz

5

Niestety, ludzie zawierają wiele "fajnych części" (zwykle zwanych utils), które powodują ten import. Bardzo często winowajcy są oddzieleni od kodu źródłowego, którego chcesz użyć. Jeśli używasz bndtools, możesz łatwo sprawdzić, jak działają zależności.

W bndtools i maven używa się bnd, a bnd bardzo ułatwia kopiowanie tylko części JAR do swojego pakietu. W ten sposób możesz zminimalizować zależności. Wystarczy skorzystać z pakietu prywatnego, aby skopiować pakiety, które naprawdę potrzebujesz, a następnie spojrzeć na import. Jeśli importujesz coś, co uważasz za potrzebne, dodaj je do pakietu prywatnego (w bndtools możesz to zrobić za pomocą przeciągania i upuszczania).

Na koniec prawdopodobnie można pozbyć się wielu niepotrzebnych importów. Jednak zazwyczaj pozostało trochę. W takim przypadku należy udekorować je z rozdzielczością: = opcjonalnie w instrukcji Import-Package:

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

Nie zapomnij o * na końcu.