gpt4 book ai didi

java - 从 maven 切换到 gradle 来管理一个 osgi 大项目(>200 包)

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:18 24 4
gpt4 key购买 nike

我们有一个大的(~215 个包,并且还在增加)osgi (felix+springdm) 项目,使用 maven 和 maven-osgi 插件构建。

我们有几个maven方式的问题:

1.子模块 pom 必须从父 pom 继承以利用公共(public)变量和依赖项(没关系),但是父 pom 必须包含所有包 pom 才能将所有内容构建在一起。这种循环引用使得保持所有同步变得非常困难。

2。子包的单独版本控制非常复杂,以至于(在我加入项目之前)决定对所有包使用相同的版本。这意味着我们现在也会为每个版本更新所有 bundle 的版本,即使实际上只是更改了其中的一部分。这使得 osgi 的整个概念有点毫无意义恕我直言。请注意,我并不是说我们会继续只接触一小部分 bundle ,我们会处理所有这些 bundle ,但每个版本通常包含 1 或 2 个功能,这些功能只会影响一些 bundle 。

3。为了完成最终 Artifact 的打包和部署,我们还需要另一个子模块来导入部署所需的所有包(除了一些用于测试和模拟的包)。[编辑]请注意,此聚合与主 pom 中的聚合不同,因为它不编译包,而只是从 maven 存储库中挑选它们。

4. Maven 依赖系统和 osgi 插件导入有时很难保持一致。忘记导入或放置错误的依赖项太容易了。

[编辑]在每个 bundle pom 中都有这样的部分:`

         <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 不是 Elixir ,而是对当前情况的明确改进。

您会推荐迁移到 gradle 吗?哪种方法最好?

有没有人遇到过同样的情况?我认为它应该适用于所有使用 Osgi 的大型项目。

免责声明:我寻找过类似的问题,例如:

Buildr, Gradle or wait for Maven 3?

Looking for a good dev environment for OSGi bundles

Maven : OSGI, bundles and multi-modules projects

但无论是哪里与 osgi 子模块无关或与 gradle 无关。

最佳答案

  1. 您可以将父模块和聚合 maven 模块分开,因为正如您正确观察到的那样,目前您的父 pom 具有两个角色。更多信息可以在 Maven Introduction to POM 中找到.
  2. 除非你使用API Tools,否则恐怕捆绑版本管理不会变得更容易。 .如果 API 工具可以集成为 Maven 插件,也许会很棒,但我不知道这方面的任何工作。因此,您要么一次接触所有版本,要么在每次需要时更新它们。 API 工具将在此处提供很大帮助,但它仅适用于 bundle ,这些 bundle 可以作为插件项目导入 Eclipse 中。
  3. 那么,另一个聚合器模块能帮上忙吗?您可以设置多个聚合器,这些聚合器聚合另一个聚合器,这样您就不会得到一个列出所有内容的巨大聚合器模块?因为,您可能不想部署所有内容,您可以设置要从部署中排除的内容。快速谷歌搜索显示了如何做 it .
  4. @Neil Bartlett 已经指出,如果您正确设置了依赖项,bnd 将处理您的 list 。如果您需要对默认值进行额外调整,您可以随时设置 BND 指令文件。

您可以将第谷放在可能的工具列表中。它将帮助你进行依赖管理,因为你只需要在 list 中指定你的依赖关系,它会允许你使用 API 工具(但还没有集成)。但是,如果您想跳过一些令人头疼的问题(直到 Tycho 改进了对依赖 Maven Artifact 的支持),它会要求您使用 p2 存储库。

关于java - 从 maven 切换到 gradle 来管理一个 osgi 大项目(>200 包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com