【问题标题】:Maven distinct dependencies?Maven 不同的依赖关系?
【发布时间】:2012-01-10 15:42:53
【问题描述】:

我想知道是否可以停止 Maven 3.0 下载旧库并仅使用不同的版本。 (更喜欢本地 repo 和我手动下载 Javadoc 和源的版本)

例如使用 JUnit 3.8.2、4.8.1 和最新的 4.x,但从不使用

背景:我的实际项目和本地存储库位于空间有限的第一个驱动器 (SSD) 上。
如果我尝试使用 maven 原型开始一个新项目(通常用于学习新主题),maven 喜欢下载即 junit 4.5 但我不喜欢手动编辑 pom 查看我的本地版本,考虑兼容性 而且我不喜欢一次又一次地清除和下载首选依赖项。

是否有任何工具、插件、设置或最佳实践来实现这一目标?

到目前为止我尝试了什么......

  • going Offline 无济于事,导致我的首选 IDE 仅针对 doc+src 手动下载 => “无法解决依赖关系...存储库系统处于脱机状态,但工件...在本地存储库中不可用。”

  • 目前的最佳做法是 (netbeans) 在上下文菜单“删除 项目中的依赖项和
    本地存储库中的“添加为依赖项..” 树。 (比如screenshots?)

【问题讨论】:

  • 您使用的是哪个版本的 Maven?

标签: maven dependencies repository maven-plugin maven-3


【解决方案1】:

在阅读了很多新东西后,我终于同意Spencer Kormos

如果您使用的是原型,那么您无能为力...

现在对我来说最好的做法是:

小解决方案
- 使用原型创建 pom
- 在 pom 顶部添加 <dependencyManagement../> 描述首选依赖项
- 添加<scope>provided</scope>
- 可选择添加<exclusions.. />
- 删除生成的 pom 中冲突的 <version../> 标签
- <dependencyManagement../> 部分我将用于在其他项目中复制/粘贴

更好的解决方案(希望如此)?
- 使用<dependencyManagement../> 的首选工件创建父/主 pom
- 使用 from 原型生成的 pom 作为模块或子项目
- 使用主 pom 将依赖项与 <packaging>pom</packaging> 进行分组

我最后一天读的一些东西只允许两个链接:-(
Maven-Model(在project下查找dependencyManagement)
Maven: The Complete Reference, Chapter 3.6.1. Grouping Dependencies

【讨论】:

  • +1 表示父 pom 包含 dependencyManagement 标记。如果您遵循 Sonotype 的最佳实践,那么无论如何您都应该在此处管理排除项,并且您可以部署一个完整的父项目,为您想要使用的那些 jar 指定您的版本。
【解决方案2】:

如果您在 pom.xml 中指定版本(作为依赖项,或从依赖项中排除旧版本),则不应下载除指定(或排除)之外的任何其他 jar。

【讨论】:

  • 当我开始使用(对我来说是新的)archtype 时,它​​通常会生成一个 pom,其中包含创建原型时实际存在的任何版本。我可以编辑生成的 pom 并指定版本,我知道。如果有机会通常排除旧版本,您的回答会有所帮助。谢谢。
  • 如果您使用的是原型,那么您无能为力,因为原型的重点是使用它提供的默认值。最简单的事情(如果不是纯粹的蛮力)是运行原型,编辑 pom,完全删除您的本地 repo,然后重新同步。无论如何,IDE 插件应该在下一次构建时处理重新同步。
  • 您还应该编辑问题,重新标记或评论问题本身,添加您正在使用的 Maven 版本。 2.0.x、2.1.x、2.2.x 和 3.x 在处理版本控制方面存在不同的功能。其他人可能对您的问题有更好的答案。
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2015-07-19
  • 2015-06-15
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多