Las prácticas recomendadas acordadas para la numeración de versiones semánticas se encuentran en https://semver.org/.
Las bibliotecas comunes deben dividirse en paquetes independientes. Esto permite reutilizarlos en todos los paquetes. Al envolver un JAR en un paquete OSGI, asegúrese de comprobar las fuentes en línea para ver si alguien ya lo ha hecho antes. Algunos lugares comunes para encontrar envoltorios de paquetes existentes son: Apache Felix, Apache Sling, Apache Geronimo, Apache ServiceMix, Recetas de paquete Eclipse y el Repositorio de paquetes Enterprise de SpringSource.
Para las dependencias en tiempo de compilación en archivos POM, siempre dependen de la versión más baja necesaria que expone la API necesaria. Esto permite una mayor compatibilidad con versiones anteriores y facilita las correcciones de la compatibilidad con versiones anteriores.
Cuando se ha exportado un paquete, se ha creado una API de la que otros pueden depender. Asegúrese de exportar lo menos posible y de que lo que se exporta es una API. Es mucho más fácil tomar un método/clase privado y hacerlo público que tomar algo que se exportó anteriormente y hacerlo privado.
Coloque siempre las implementaciones en una ubicación independiente impl paquete. De forma predeterminada, la variable maven-bundle-plugin exporta cualquier elemento del proyecto que no tenga un impl en su nombre.
Esto permite que los consumidores de su API evolucionen junto con usted. Al hacerlo, siga siempre las prácticas recomendadas de control semántico de versiones. Esto permite a los consumidores de la API saber qué tipos de cambios esperar en una nueva versión.
Al especificar información significativa sobre el tipo de metal, facilita la comprensión de sus servicios y componentes en la consola Felix. Puede encontrar una lista de anotaciones y atributos de SCR en: https://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html.