2012-01-10 151 views
0

我想知道是否有可能停止Maven 3.0下载旧库并仅使用不同版本。 (prefering本地回购和其中i下载Javadoc和手动源的版本)Maven独立依赖关系?

例如使用JUnit 3.8.2,4.8.1和最新4.x的,但从来没有< 3.8.1,4.5,4.6 - 快照等。

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

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

我试过到目前为止...

  • going Offline不利于手动引起我的首选IDE提供下载只针对DOC + SRC =>“无法解析的依赖......储存库系统处于离线状态,但工件...在本地存储库中不可用。“

  • 现在最好的做法是(NetBeans的)在上下文菜单从本地存储库 树项目“删除 dependecy”和
    “添加为Dependecy ..”。 (如screenshots?)

+0

您使用的是哪个版本的Maven? – 2012-01-10 15:45:27

+0

我使用的是Maven 3.0。 – BudMinton 2012-01-10 17:41:01

回答

0

如果你指定在你的pom.xml的版本(如依赖,或排除从依赖旧版本),它不应该下载任何其它罐子非指定(或除外)。

+0

当我开始使用(对于新的)archtype时,它通常会生成一个pom,其中包含实际创建原型时的任何版本。我知道,我可以编辑生成的pom并指定版本。 如果有机会通常排除旧版本,您的答案将会有所帮助。谢谢。 – BudMinton 2012-01-10 16:26:29

+0

如果您使用的是原型,那么您可以做的事情并不多,因为原型的目的是使用它提供的默认值。最简单的事情(如果不是纯粹的蛮力)是运行原型,编辑pom,完全删除本地回购,并重新同步。无论如何,IDE插件应该处理下一个版本的重新同步。 – 2012-01-10 17:11:59

+0

您还应该编辑问题,对问题进行重新标记或评论,添加您使用的Maven版本。在2.0.x,2.1.x,2.2.x和3.x版本中处理版本的功能有所不同。其他人可能对您的问题有更好的答案。 – 2012-01-10 17:13:56

1

读多少新的东西后,我终于同意Spencer Kormos

如果您使用的原型,有没有什么可以做...

最适合我的做法是现在这样的:

小的解决方案
- 使用原型创建POM - 添加<dependencyManagement../> decribing在POM
上方的首选依赖 - 添加<scope>provided</scope>
- optionaly您可以添加<exclusions.. />
- 删除生成的POM
冲突<version../>标签 - 在<dependencyManagement../>部分,我将使用在其他项目中复制/粘贴

更好的解决方案(希望)?
- 创建父/母POM与首选器物<dependencyManagement../>
- 使用从原型产生的聚甲醛作为模块或子项目
- 使用用于分组的依赖关系的主聚甲醛与<packaging>pom</packaging>

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

+0

+1为父pom包含dependencyManagement标记。如果您关注Sonotype的最佳实践,那么无论如何您都应该在这里管理排除项目,并且您可以部署完整的父项目,并为您要使用的那些jar指定版本。 – 2012-01-11 14:42:45