我正在使用maven copy-dependencies将我的OSGI bundle依赖项复制到某个位置。在我的依赖图中的某个地方,我有两个版本的同一个工件,而maven的分辨率忽略了一个。无论如何,我可以避免这种情况并强制maven解析同一个工件的多个版本?
答案 0 :(得分:0)
mavens核心功能之一是Dependency mediation。如果您在图形上有相同工件的两个版本,maven将尝试找到最近的版本(它不会“忽略一个”但决定使用另一个版本):
引用:
“依赖中介 - 这决定了依赖项的版本 将在遇到多个版本的工件时使用。 目前,Maven 2.0仅支持使用“最近定义” 这意味着它将使用最接近的依赖版本 你的项目在依赖树中。“
在OSGi的相反位置,您可以在不同版本中拥有相同的包,maven将始终以一个工件仅存在于一个(最近的)版本中的方式来解析依赖关系。如果这是不可能的(例如因为强制使用不同的版本),您将遇到冲突,构建将失败。
答案 1 :(得分:0)
您可以在maven-bundle-plugin中使用Embed-Dependency标记,但这可能不是最佳方法。
我创建了这个博客,详细解释了如何以多种方式解决这个OSGi问题,您可能希望选择最适合您的问题:http://www.citizenrandom.com/?cat=2