Usando Maven, es muy fácil crear un paquete OSGi desde cualquier biblioteca. Sin embargo, creo que el mismo resultado se puede crear con otros mecanismos, también. La solución de Maven me ayudó a entender cómo funciona.
crear el lote se hace mediante la creación de un proyecto que tiene la biblioteca como una dependencia y luego empaquetar el proyecto mediante el maven-bundle-plugin del Apache Felix project y especificando los paquetes de bibliotecas con la instrucción Export-Package
. He utilizado este para compartir de Google Protocol Buffers entre los haces dentro de un contenedor 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>
Si desea que todas las dependencias transitivas, todo en el paquete, también, utilizar el objetivo bundleall
del plugin.
El complemento reconoce y respeta los manifiestos OSGi existentes en la dependencia.
También puede usar el complemento del paquete para simplemente crear el manifiesto y decirle al jar
complemento de empaquetado (o al ensamblado incorporado jar-with-dependencies
) que use ese manifiesto a través de la sección de archivo. La página del complemento vinculada anteriormente muestra cómo hacerlo.
También hay repositorios que contienen la versión "osgi-ified" de muchas bibliotecas populares: SpringSource es una gran fuente: http://www.springsource.com/repository/app/ – Thilo
¡gracias por el enlace! – basszero