仅在构建服务器中使用Maven,而不是在开发人员中使用Maven

时间:2016-04-07 13:55:02

标签: maven jenkins continuous-integration osgi

目前,开发人员正在处理多个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。

此致

1 个答案:

答案 0 :(得分:2)

如果开发人员不使用maven,那么他们使用什么来构建。我认为拥有一个自动构建系统是有意义的。因此,您应该在开发人员系统上使用maven或类似gradle之类的东西。

另一个问题是手动维护Manifest文件是否有意义。这是PDE在eclipse中工作的方式,但我认为在构建过程中创建Manife会更有效。这可以通过使用felix的maven-bundle-plugin来完成。这样工作要容易得多。

有关示例,请参阅karaf tutorials

您可以追求的另一个选择是查看bndtools及其gradle构建。这有点特别,但很方便。