可在https://semver.org/找到语义版本编号的一致最佳实践。
应将公用库分解为单独的包。 这将允许在您的捆绑包中重复使用它们。 将JAR打包到OSGI包中时,请确保检查联机源,看看是否有人以前已经这样做过。 查找现有捆绑包装的一些常见位置是: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。