Creando una aplicación OSGi completa con Felix y Maven

Tengo un conjunto de paquetes OSGi que se están construyendo con Maven y me preguntaba si hay un complemento de Maven disponible que me permita hacer lo siguiente:

  1. Especifique el conjunto de paquetes a incluir en una distribución y / o especifique un solo paquete y tenga las dependencias resueltas.
  2. Construye una distribución completa del framework. Lo que quiero decir es un solo archivo zip que contiene todos los paquetes necesarios, más la estructura de directorios correcta para felix, de modo que el usuario simplemente pueda descomprimir el archivo y escribir “java -jar bin / felix.jar”.

Hice algo de Google y no encontré nada muy prometedor, aparte de appassembler. ¿Alguno de ustedes ha encontrado una buena solución?

Actualización Aquí hay una ilustración de lo que estoy tratando de lograr.

example-parent\ bundle-one bundle-two bundle-three assembly-one assembly-two 

Donde el assembly-one incluiría el bundle-one y el bundle-two y el assembly-two incluiría el bundle-two y el bundle-three o cualquier combinación de los mismos. Luego, cuando construya su proyecto, obtendrá dos archivos zip, uno para el assembly-one y otro para el assembly-two que contendrían los paquetes adecuados en una instalación de felix independiente. Por ejemplo:

 assembly-one.zip\ bin\felix.jar bundle\bundle-one, bundle-two, plus bare min felix bundles conf\any configuration files I need 

Esperemos que proporcione un poco más de información sobre lo que estoy tratando de lograr. Supongo que esto es algo similar a cómo Eclipse hace un feature.xml, pero por supuesto no usa Eclipse.

La sugerencia de Fred de usar el complemento de ensamblaje para empaquetar una distribución autocontenida que se puede comprimir es una buena idea. Si está buscando un ejemplo de cómo funcionarían los archivos de comstackción para esto, la fuente de muestra del blog Apache Aries utiliza el paquete de Maven y los complementos de ensamblaje.

Otro enfoque es crear artefactos de aplicación. No hay un solo estándar OSGi para esto (todavía), pero varios proyectos proporcionan una forma de agrupar paquetes en super-paquetes. Esto no se parece en nada a lo que describe con sus ensamblajes, ya que el marco OSGi no está incluido, pero es similar a Eclipse feature.xmls. Eche un vistazo a las aplicaciones Apache Aries eba (archivo de paquetes empresariales), archivos de plan Virgo o funciones Karaf. En la mayoría de estos paquetes, obtiene un archivo que incluye algunos paquetes y / o un archivo de metadatos que describe el contenido de la aplicación. Los paquetes que no están incluidos en el archivo se pueden aprovisionar desde un repository. Para Aries, también hay un paquete eba maven que generará el archivo .eba que contiene el archivo APPLICATION.MF y los paquetes incluidos.

Tenemos un poco más sobre esto en el Capítulo 4 de Enterprise OSGi en Acción ( http://www.manning.com/enterpriseosgiinaction ), o una función rápida de Google para eba, Virgo plan o karaf debería encontrar mucho más. La desventaja de su caso de uso es que las aplicaciones deberían implementarse en un tiempo de ejecución con la tecnología apropiada preinstalada en ellas, ya que ninguna es OSGi principal.

Otro proyecto a considerar para facilitar la implementación es la instalación de archivos de Felix. Esto le permite colocar paquetes en un directorio monitoreado, lo que ahorra tener que escribir archivos de configuración.

El Sling Launchpad Plugin [1] crea un archivo jar ejecutable o un archivo war que integra el marco OSGi y una lista de paquetes personalizables, eso es probablemente lo que necesita. Con eso ni siquiera tienes que descomprimir el archivo jar generado, solo comenzar es suficiente.

[1] http://sling.apache.org/site/maven-launchpad-plugin.html

Tal vez esto puede ayudar para lo que está tratando de lograr?

No lo sé con seguridad, pero tal vez vale la pena intentarlo.

http://maven.apache.org/plugins/maven-assembly-plugin/

También quizás lo siguiente ?:

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

Requerirá un poco de lectura / investigación, pero creo que podría ser útil. Si no, entonces tal vez no entiendo correctamente tu objective y lo siento.

Si está utilizando OSGi v4 + y está construyendo con Maven, use pax-ops4j . Es muy conveniente de usar y hace que el desarrollo OSGi sea muy fácil.