セマンティックバージョン番号付けに関して合意されたベストプラクティスは、https://semver.org/にあります。
共通ライブラリは個別のバンドルに取り出す必要があります。これで、共通ライブラリをバンドル全体で再利用できるようになります。OSGi バンドルに JAR をラップするときは、オンラインソースを調べて、誰かが既にこのラップをおこなっていないかどうかを確認してください。既存のバンドルラッパーを探す一般的な場所としては、Apache Felix、Apache Sling、Apache Geronimo、Apache ServiceMix、Eclipse Bundle Recipes および SpringSource Enterprise Bundle Repository があります。
POM ファイルのコンパイル時依存関係の場合、常に、必要な API を公開するために最低限必要なバージョンに依存するようにします。これにより、後方互換性が高くなり、古いリリースのバックポートの修正が容易になります。
パッケージのエクスポートが完了したら、すぐに他のユーザーが依存する API を作成しておきます。書き出しはできるだけ少なくし、書き出されるものがAPIであることを確認します。 以前に書き出されたものを取り出してプライベートにするよりも、プライベートメソッド/クラスを取って公開する方がずっと簡単です。
実装は、必ず個別の impl パッケージに配置する必要があります。デフォルトでは、maven-bundle-plugin は、名前に impl が含まれていないプロジェクトにあるものをすべてエクスポートします。
このようにすることで、API の利用者も新しいバージョンに取り組むことができます。その場合は、必ずセマンティックのバージョン管理のベストプラクティスに従ってください。 これにより、APIの利用者は、新しいバージョンで予想される変更のタイプを知ることができます。
意味のあるメタタイプ情報を指定することで、Felix コンソールでのサービスおよびコンポーネントが理解しやすくなります。SCR注釈と属性のリストは、次の場所で確認できます。https://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html.