具有OSGI依赖项的Maven



我正在使用 maven copy-dependencies 将我的 OSGI bundle 依赖项复制到某个位置。在我的依赖关系图中的某个地方,我有两个版本的同一工件,而 maven 的分辨率忽略了一个。无论如何,我可以避免这种情况并强制 maven 解析同一工件的多个版本?

mavens 的核心功能之一是依赖关系中介。如果你有两个版本的同一工件,你的图maven将尝试找到最接近的版本(它不会"忽略一个",而是决定使用另一个):

报价:

"依赖关系中介 - 这决定了依赖关系的版本 将在遇到项目的多个版本时使用。 目前,Maven 2.0仅支持使用"最接近的定义" 这意味着它将使用最接近依赖项的版本 依赖项树中的项目。

与OSGi相反,您可以在不同版本中使用相同的捆绑包,maven将始终以工件仅存在于一个(最近的)版本中的方式解析依赖关系。如果这是不可能的(例如,因为强制使用不同的版本),您将遇到冲突并且构建将失败。

您可以在 maven-bundle-plugin 中使用嵌入依赖项标签,但这可能不是最佳方法。

我创建了这个博客,其中详细介绍了如何以多种方式处理此OSGi问题,您可能希望选择最适合您的一种:http://www.citizenrandom.com/?cat=2

最新更新