从 maven 切换到 gradle 来管理 osgi 大项目(>200 个捆绑包)
我们有一个大的(~215个捆绑包,并且还在计数)osgi(felix + springdm)项目,使用maven和maven-osgi插件构建。
我们在 maven way 上有几个问题:
1. 子模块 pom 必须从父 pom 继承才能利用通用变量和依赖项(没关系),但父 pom 必须包含所有捆绑包 pom 才能一起构建所有内容。这种循环引用很难保持所有同步。
2.子捆绑的单个版本控制非常复杂,以至于(在我加入该项目之前)决定对所有捆绑包使用相同的版本。这意味着我们现在为每个版本更新所有捆绑包的版本,如果实际上只更改了一堆捆绑包。这使得osgi的整个概念有点毫无意义。请注意,我并不是说我们继续只接触少数捆绑包,我们处理所有这些捆绑包,但每个版本通常包含1或2个功能,这只影响一些捆绑包。
3.要完成包和最终工件的部署,我们还需要另一个子模块来导入部署所需的所有捆绑包(除了少数用于测试和模拟的捆绑包之外)。[编辑]请注意,此聚合与主 pom 中的聚合不同,因为它不编译捆绑包,而只是从 maven 存储库中选取它们。
4.maven依赖系统和osgi插件导入有时很难保持一致。忘记导入或放置错误的依赖项太容易了。
[编辑]在每个捆绑绒球中都有一个这样的部分:'
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>
</Export-Package>
<Import-Package>
com.google.gson,
org.apache.log4j,
org.apache.log4j.spi,
org.dom4j,
com.myinterfaces
</Import-Package>
</instructions>
</configuration>
</plugin>`
由于所有这些原因,我们还可以,但对maven并不完全满意。最近,有人提出Gradle不是作为灵丹妙药,而是作为对当前情况的明确改进。
你会建议搬到 gradle 吗?如果哪种方式是最好的方法?
其他人是否经历过同样的情况?我认为这对于Osgi的所有大型项目来说都应该是通用的。
免责声明:我寻找类似的问题,例如:
但是要么不是关于osgi子模块,要么不是关于gradle。