Ich habe ein OSGI
Bundle, das eine Abhängigkeit von einer 3rd-Party-Bibliothek hat, ich möchte diese Bibliothek nicht im Container bereitstellen, ich würde es lieber in meinem Bundle einbetten.Einbetten von transitiven Abhängigkeiten in OSGI
Natürlich hat diese Bibliothek ihre eigenen Abhängigkeiten, ich möchte sie auch einbetten.
Ich bin mit dem Maven Bundle Plugin
:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Description>${project.description}</Bundle-Description>
<Bundle-Vendor>${bundle.vendor}</Bundle-Vendor>
<Meta-Persistence>...</Meta-Persistence>
<Export-Package>...</Export-Package>
<Import-Package>...</Import-Package>
<Embed-Dependency>3rd-Party</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
</instructions>
</configuration>
</plugin>
Als Ergebnis 3rd-Party
wird in dem resultierenden Bündel eingebettet, aber nicht seine transitive Abhängigkeiten, als ob <Embed-Transitive>true</Embed-Transitive>
keine Auswirkungen haben.
So habe ich einige Fragen
- Ist dies der richtige Weg, um eine 3rd-Party-Bibliothek in einer transitiven Weise einzubetten?
- Wird die generierte Manifest-Datei berücksichtigt (nicht das Importieren von Paketen, die zur 3rd-Party-Bibliothek und ihren Abhängigkeiten gehören)?
Danke
Hallo Christian, also denken Sie, dass es ein Problem mit der genauen Angabe der 3rd-Party-Bibliothek gibt? – isco
wie für die Importe für Pakete, die eingebettet sind, wächst die Liste der importierten Pakete sehr schnell, wenn ich Abhängigkeiten einbetten, denke ich, das Plugin kümmert sich nicht um diese – isco
Ein großes Problem mit vielen Bibliotheken ist, dass sie eine Menge optionaler verwenden Abhängigkeiten. Wenn Sie einfach eine solche Bibliothek einbetten, erhalten Sie auch die optionalen Deps. Ein solcher Baum kann sehr schnell wachsen. Wenn dies bei Ihnen der Fall ist und Sie wissen, dass Sie einige der optionalen Deps nicht benötigen, können Sie versuchen, sie in maven auszuschließen. –