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?
Odpowiedz
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.
- 1. Używanie JavaCompiler w pakiecie OSGi
- 2. Korzystanie z JavaFX 2.2 w pakiecie OSGi
- 3. Znajdowanie plików i folderów w pakiecie OSGI
- 4. Jak utworzyć/zainicjować Javassist ClassPool w pakiecie OSGi?
- 5. Groovy + OSGi lub Grails?
- 6. osgi projekt jak czytać plik zasobów w pakiecie
- 7. poradnik zaawansowane WebGrid lub rozwiązanie
- 8. Aby osadzić OSGi w kontenerze serwletu lub kontenerze serwletów w OSGi?
- 9. Ignorowanie zależności w pakiecie Nuget
- 10. Opcjonalne łańcuchy w JavaScript
- 11. Moduły/pakiety OSGi granulacja
- 12. Objective-C jest @synthesize wymagane lub opcjonalne?
- 13. Jak uzyskać listę wszystkich plików (lub modułów) zawartych w pakiecie w pakiecie Webpack
- 14. OSGi w infrastrukturze rozproszonej
- 15. Jak pominąć lub zignorować konstruktory pytonów
- 16. Jak napisać aplikację z wiersza poleceń OSGI
- 17. Opcjonalne argumenty w defgeneric?
- 18. Pakiet Java w pakiecie?
- 19. Opcjonalne białe znaki Regex
- 20. Opcjonalne lub warunkowe foldery w tagu plików NuGet?
- 21. opcjonalne argumenty w Haskell
- 22. opcjonalne delegatów w C#
- 23. Zamiana uruchomionego słoika w czasie wykonywania
- 24. GetElementsByTagName w pakiecie Htmlagilitypack
- 25. Skrypty w pakiecie Pythona
- 26. Używanie osadzonego kontenera OSGi
- 27. Jak skopiować plik wewnątrz słoika na zewnątrz słoika?
- 28. Parametry opcjonalne dla interfejsów
- 29. W tym dodatkowe zasoby z pakietami OSGi
- 30. Konfiguracja Eclipse OSGI: względne ścieżki i/lub substytucje @ config.dir?
Dlaczego nie po prostu wdrożyć wymagane słoiki jako paczki i dodać odpowiednie zależności do własnych zamiast osadzania. – Robin