Utilizzando Maven, è molto facile creare un pacchetto OSGi da qualsiasi libreria. Tuttavia, penso che lo stesso risultato possa essere creato anche con altri meccanismi. La soluzione Maven mi ha aiutato a capire come funziona.
Creazione del fascio è fatto con la creazione di un progetto che ha la biblioteca come una dipendenza e poi il confezionamento del progetto utilizzando il maven-bundle-plugin dal Apache Felix project e specificando i pacchetti di libreria con l'istruzione Export-Package
. Ho usato questo per condividere Google buffer protocollo tra fasci all'interno di un contenitore OSGi:
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.lib</groupId>
<artifactId>protobuf-dist</artifactId>
<version>2.1.0</version>
<name>Google Protocol Buffers OSGi Distribution</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.google.protobuf</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
Se si desidera che tutte le dipendenze transitive rotolato in bundle, anche, utilizzare il bundleall
obiettivo del plugin.
Il plug-in riconosce e onora i manifesti OSGi esistenti nella dipendenza.
È anche possibile utilizzare il plug-in di bundle per creare semplicemente manifest e indicare al plugin di imballaggio jar
(o assembly incorporato jar-with-dependencies
) per utilizzare tale manifest tramite la sezione archive. La pagina del plugin collegata sopra mostra come farlo.
fonte
2009-08-05 19:06:45
Ci sono anche repository che contengono la versione "osgi-ified" di molte librerie popolari: SpringSource è una grande: http://www.springsource.com/repository/app/ – Thilo
grazie per il link! – basszero