【问题标题】:Double artifact resolution in Maven/Assembly pluginMaven/Assembly 插件中的双重工件解析
【发布时间】:2016-10-08 08:33:55
【问题描述】:

我们正在使用 Maven 3.0.5 和程序集插件 2.2-beta-3

当我们得到传递范围依赖时,我们遇到了一个问题,即在编译和组装阶段解决了不同的版本(我们在 jar 的清单中将版本 X 放入 tar.gz 组装包中)。

问题:是否可以在编译+组装步骤中避免重复的工件解析,以便组装将使用与编译解析相同的工件?

UPD:在程序集 2.6 中看到同样的问题,可能会尝试为它构建一个最小示例。

【问题讨论】:

  • 为什么要使用这么旧版本的程序集插件(以及 maven)?
  • 使用最新的插件版本请参阅maven.apache.org/plugins 并使用这些版本...如果您有其他问题,请在用户列表中发送邮件,或者如果您认为您发现了错误,请提交 jira 票证。当前版本是 2.6 !

标签: maven maven-3 maven-assembly-plugin


【解决方案1】:

您使用的是maven-assembly-plugin 的真正旧版本,版本2.2-beta-3 来自2009

从那时起,许多类似的问题已经得到解决,仅举几例:

  • MASSEMBLY-448:Assembly 插件对依赖集的依赖解析与 maven 依赖解析不一致
  • MASSEMBLY-432: 程序集误用 depMgt 并为存档选择了错误的依赖项
  • MASSEMBLY-299: 程序集不符合 <dependencyManagement> 指令

因此,我强烈建议至少将其升级到非测试版,即已发布的 2.2

较新版本的 Maven 和较新版本的程序集插件将是理想的解决方案,但这实际上取决于您对这些版本的严格限制(如果有)。

【讨论】:

  • 2.2 也很老了……不要用这么老的版本。请参阅我上面的评论。
  • @A. Di Matteo 感谢您的建议,看起来问题出在过时的版本上,所以我们会尝试更新并再次检查。剩下的问题是 - 你知道是否可以通过编译/组装阶段避免重复解析?
  • @khmarbaise 我同意,正如我在答案底部所说,maven 和插件都应该升级,但我们不知道为什么使用这些旧版本(如果有任何真实/硬性原因存在),所以至少作为最低限度的建议,我会说不要使用测试版。然后,我们肯定是一致的,避免同时使用 2009 年发布的版本,并尝试推动更新。
  • 当然。该问题与许多旧帖子有关,这些帖子引用了复制粘贴的旧版本...;-)
  • @dbf 插件需要解析(传递)依赖关系,以将它们打包到一个带有依赖关系的 jar 中,但是无论如何解析都将针对本地存储库(除非存在不匹配解析的错误)。检查this SO thread 是否有类似问题。解决方案是转移到maven-shade-plugin,无论如何在大多数情况下,这是推荐的方法。
猜你喜欢
  • 2013-03-14
  • 2018-12-20
  • 2018-02-10
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2010-12-29
  • 1970-01-01
相关资源
最近更新 更多