在命令行帮助中,我看到maven"检查"更新:
-U,--update-snapshots Forces a check for updated
releases and snapshots on remote
repositories
Run Code Online (Sandbox Code Playgroud)
但是,Stack Overflow上的大多数问题都意味着此选项会强制Maven更新.这是否意味着它强制重新下载依赖项?
Ale*_*der 11
如果你不使用-U,maven可能会缓存结果 - 即使找不到依赖项(例如,因为你的nexus [或类似]不可用,配置错误,不包含依赖[尚未]或其他).
如果是这样的话.Maven遵循存储库updatePolicy,告诉它maven检查依赖关系是否经常更新的频率(如果有的话).daily因此,如果临时错误导致maven没有下载依赖项,则默认值可能需要在maven再次尝试之前一天.-U覆盖并告诉它现在检查.
-U如果已经下载并且校验和相同,则不会重新下载依赖项!它只检查校验和.
更新:正如@Stas指出的那样,如果校验和不同,它将重新下载并使用远程存储库中的JAR 重写本地JAR.
BTW:Maven使用与依赖项+同名的时间戳文件,".lastUpdated"以了解上次在哪个服务器上检查依赖项.例如~/.m2/repository/org/springframework/spring-webmvc/3.1.2.RELEASE/spring-webmvc-3.1.2.RELEASE.jar.lastUpdated
updatePolicy示例:
<repositories>
<repository>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
<!-- ... -->
</repository>
<!-- ... -->
</repositories>
Run Code Online (Sandbox Code Playgroud)
有关updatePolicy的详细信息,请参阅http://maven.apache.org/pom.html#Repositories.
添加执行mvn -U将使用远程 SNAPSHOT jar覆盖本地 SNAPSHOT jar很重要。
没有-U参数,本地快照不会被覆盖。