目前,开发人员正在处理多个OSGi Bundle,它们也通过OSGI导入/导出相互使用。 Eclipse用于开发和测试。
现在,我们将设置一个CI服务器(Jenkins),它应该使用Maven构建所有osgi包(来自repo)。因此,只有CI服务器才需要maven。这也意味着,开发人员在工作站上开发时既不会看到也不关心pom.xml,因为他们没有与maven取得联系。
我的第一个问题是,如果有可能的话。当开发人员更改Manifest上的导入和导出时,maven必须知道为编译器提供这些依赖项。例如,maven想要构建BundleB,它从BundleA导入包a。通常,pom.xml会在Bundle A上包含maven依赖(之前必须将其部署到本地maven repo)。但是当开发人员只更改他们的捆绑包中的MANIFEST.MF时,pom.xml中没有条目。是否有可能maven通过解析MANIFEST来确定正确的maven依赖关系?或者另一个解决方案:告诉maven一个带有所有预制罐子的类路径?
我的第二个问题是,是否建议仅在ci服务器上使用maven,而不是在开发人员处使用maven。
此致
答案 0 :(得分:2)
如果开发人员不使用maven,那么他们使用什么来构建。我认为拥有一个自动构建系统是有意义的。因此,您应该在开发人员系统上使用maven或类似gradle之类的东西。
另一个问题是手动维护Manifest文件是否有意义。这是PDE在eclipse中工作的方式,但我认为在构建过程中创建Manife会更有效。这可以通过使用felix的maven-bundle-plugin来完成。这样工作要容易得多。
有关示例,请参阅karaf tutorials。
您可以追求的另一个选择是查看bndtools及其gradle构建。这有点特别,但很方便。