Próbuję zrozumieć różnicę pomiędzy następującymiOSGI Bundle vs zależność słoik
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
I
<dependency>
<groupId>com.myspace.order</groupId>
<artifactId>dal</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>bundle</type>
</dependency>
The samego artefaktu dal został określony jako opakowanie wiązki jak:
<packaging>bundle</packaging>
Teraz, gdy rozmieszczam dal artefakt, widzę go opublikowany w repozytorium jako słoik (z manifestem w nim). W tym przypadku, jaka powinna być moja zależność od dal. Czy powinien to być pakiet typu lub słoik? Jeśli robię OSGI, zakładam, że będzie to typ określony jako pakunek. Czy to jest poprawne? Czy mogę po prostu mieć zależność słoik tutaj?
„, na przykład, nie będzie narzekać, jeśli starają się używać pakietów nie wywożone przez wiązki jesteś w zależności od .... " Czy to oznacza, że zależności OSGI są wymuszane (i wykrywane) w środowisku wykonawczym? Myślałem, że pakiet eksportowy został zweryfikowany podczas kompilacji. – Sudoer
Zależności zostaną ROZWIĄZANE po zainstalowaniu pakietu w kontenerze OSGi. Ponieważ OSGi jest środowiskiem dynamicznym, możesz zainstalować pakiet w dowolnym momencie ... Jeśli pakiet przejdzie w stan RESOLVED, może on zostać ZAKOŃCZONY. Innymi słowy, instalacja jest rodzajem dynamicznej kompilacji ... jeśli pakiet ją przekaże, jest zagwarantowane, że w momencie instalacji wszystkie importowane towary były spełnione, więc pakiet może zostać uruchomiony. – Renato
Nie ma mowy, że OSGi może rozwiązać zależności między pakietami zanim spróbujesz je zainstalować, ponieważ będzie to zależało od zestawu pakietów dostępnych podczas instalacji.Z kolei Maven używa normalnej procedury kompilacji Java, ignorując reguły widoczności OSGi ... to główna różnica. – Renato