Le best practice concordate per la numerazione delle versioni semantiche sono disponibili all'indirizzo https://semver.org/.
Le librerie comuni devono essere raggruppate in pacchetti separati. In questo modo sarà possibile riutilizzarli nei bundle. Quando racchiudete un JAR in un pacchetto OSGI, verificate di aver controllato le origini online per verificare se qualcuno ha già fatto questo. Alcuni luoghi comuni per trovare i bundle esistenti sono: Apache Felix, Apache Sling, Apache Geronimo, Apache ServiceMix, Eclipse Bundle Recipes e SpringSource Enterprise Bundle Repository.
Per le dipendenze in fase di compilazione nei file POM, dipende sempre dalla versione minima necessaria che espone l'API necessaria. Ciò consentirà una maggiore compatibilità con le versioni precedenti e faciliterà il backport delle correzioni alle versioni precedenti.
Non appena un pacchetto è stato esportato, abbiamo creato un'API da cui gli altri utenti possono dipendere. Assicuratevi di esportare il meno possibile e assicuratevi che ciò che viene esportato sia un'API. È molto più facile prendere un metodo/classe privato e renderlo pubblico che prendere qualcosa che è stato precedentemente esportato e renderlo privato.
Le implementazioni devono sempre essere collocate in un pacchetto impl separato. Per impostazione predefinita, il maven-bundle-plugin esporta qualsiasi elemento del progetto che non abbia un impl nel nome.
In questo modo i consumatori delle API potranno evolvere insieme a voi. In questo modo, segui sempre le best practice relative alle versioni semantiche. In questo modo gli utenti dell'API potranno sapere quali tipi di modifiche sono previste in una nuova versione.
Specificando informazioni significative per il tipo di dati, i vostri servizi e componenti saranno più facili da comprendere nella console Felix. Un elenco delle annotazioni e degli attributi SCR è disponibile all'indirizzo: https://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html.