maven osgi apache-karaf osgi-bundle karaf

maven - ¿Cómo trabajar con las implementaciones locales frecuentes de paquetes de instantáneas en Karaf?



osgi apache-karaf (1)

Decidí construir una aplicación sobre OSGI y Karaf, realmente me gusta esto. Sin embargo, estoy luchando un poco con una implementación diaria en mi máquina de desarrollo local. Quiero decir ... Hago un cambio y luego me gustaría probarlo en mi instancia local de Karaf. Y puede pasar como un par de veces por hora.

La forma en que lo estoy haciendo ahora es una compilación maven que crea un paquete JAR y luego se copia en el directorio de implementación de Karaf. Creo que no es nada elegante.

Estaba tratando de encontrar un camino alrededor (google). Leí sobre las características de Karaf, pero parece que a pesar del hecho de que es un buen mecanismo para implementar una aplicación completa, no resuelve mi problema. Como lo entiendo bien, no comprueba si la nueva versión de mi tarro SNAPSHOT apareció en mi repositorio local, ¿verdad?


La clave para hacer que el mecanismo de actualización de karaf funcione es desplegar desde maven en lugar de usar la carpeta de despliegue. Instala tu paquete de esta manera:

install -s mvn:groupid/artifactID/version

o

install -s mvn:groupid/artifactID/version/typeOfMavenArtifact

La segunda es útil para instalar, por ejemplo, artefactos de guerra / wab. La especificación completa del protocolo de Maven se puede encontrar here .

Entonces Karaf sabe de dónde viene el paquete. También puedes verificar esto usando la -u . Esto hace que karaf muestre la ubicación de actualización, que ahora debería ser un uri experto. No sabrás que todos los paquetes karaf tienen una ubicación de actualización como esta.

Cuando ahora creas una nueva versión de tu proyecto usando maven, terminará en tu repositorio local de maven. Entonces simplemente ejecuta

update <bundleid>

Esto hace que karaf verifique la ubicación de la actualización (en su caso, su representante local de maven) y vuelva a cargar el paquete desde allí.

Incluso puede automatizar aún más esto mediante el uso de

dev:watch

o para karaf 3+

bundle:watch

Esto hará que karaf revise su repositorio de Maven para detectar cambios en los paquetes SNAPSHOT que ha implementado y los volverá a implementar automáticamente.

Esto también funciona muy bien junto con la depuración remota. Utilizar

export KARAF_DEBUG=true

antes de comenzar karaf. Entonces escuchará a un depurador en el puerto 5005.

Luego puede iniciar una sesión de eclipse de depuración remota en el mismo puerto y depurar su aplicación en karaf. Esto funciona muy bien incluso si cambias tu paquete usando uno de los enfoques anteriores. Así que puede depurar, encontrar su problema, cambiar el código, compilar y continuar con la versión modificada.

También lo uso con frecuencia cuando trabajo en el código base de karaf, ya que esto también funciona para la mayoría de los paquetes de karaf.