Maven强制更新快照依赖项
以下是mvn版本的结果:Maven强制更新快照依赖项,maven,Maven,以下是mvn版本的结果: Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800) Maven home: /usr/share/maven Java version: 1.7.0_67, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre Default locale: en_US,
Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800)
Maven home: /usr/share/maven
Java version: 1.7.0_67, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"
假设我有一个快照依赖项:
<dependency>
<groupId>org.puzzled</groupId>
<artifactId>foo</artifactId>
<version>1.0.4-SNAPSHOT</version>
</dependency>
它应该只是(重新)下载所有依赖项。对吗?事实并非如此。它下载快照依赖项的元数据,推断(错误的是)不需要更新。我必须删除本地.m2存储库中的关联子目录,以便Maven从远程repo更新快照版本,即使使用-U标志也是如此
这是一个错误,还是我遗漏了什么
mvn clean install -U
-U表示强制更新依赖项。存储库是否可能使用非唯一的快照名称发布您的
foo
这很好地解释了唯一和非唯一快照工件之间的区别
本质上,如果工件元数据在nexus上显示为foo-1.0.4-SNAPSHOT.jar
,则它是非唯一的。如果它显示为foo-1.0.4-20160122.172609-36.jar,则它是唯一的
您只能在Maven 3中发布唯一的快照工件,但仍然可以解析旧的时间戳非唯一快照。。。但这很不确定。看一下,在本地和远程机器上,文件系统日期和metadata.xml之间似乎存在一些不清楚和模糊的交互
基本上:(1)尝试确保快照依赖项是使用唯一的工件发布的,(2)如果不是,则不要依赖于检测到的新快照。使用mvn依赖项:使用适当的包含项清除本地存储库
,以从本地m2中删除旧快照。我在maven 3.0.3中从未遇到过这个问题,但在3.2.3中开始得到它,就像您描述的那样:-(只是为了检查,您可能至少要尝试复制本地.m2文件夹以保存到其他地方,并清除.m2目录。然后尝试运行新安装,看看它是否获取依赖项。这将只是检查以确保您的设置实际上正确,并且您正在使用正确的服务器查找工件,以防发生错误。)本地缓存所有依赖项。可能重复您所说的“我在本地repo中下载了该快照的副本”-在执行上一次干净安装时由maven下载?或手动下载?
mvn clean install -U