In the command line help, I see that maven \"checks\" for updates:
-U,--update-snapshots Forces a check for updated
If you do not use -U
, maven might cache results - even if a dependency could not be found (e.g. because you nexus [or alike] was unavailable, misconfigured, didn't contain the dependency [yet] or whatever).
If that's the case. Maven follows the repository's updatePolicy
, which tells it how often (if ever) maven checks if a dependency has been updated. Default is daily
therefore if a temp error causes maven to not download a dependency, it might take one day before maven tries again. -U
overwrites that and tells it to check now.
-U
does not re-download a dependency if it has already been downloaded and if the checksum is the same! It only checks for the checksum.
Update: as @Stas pointed out, if the checksum differs, it will re-download and override you local JARs with the ones from the remote repository.
BTW: Maven uses a timestamp file that has the same name as the dependency + ".lastUpdated"
to know when a dependency has been last checked on which server. E.g. ~/.m2/repository/org/springframework/spring-webmvc/3.1.2.RELEASE/spring-webmvc-3.1.2.RELEASE.jar.lastUpdated
Example for updatePolicy:
false
always
true
never
See http://maven.apache.org/pom.html#Repositories for further information about the updatePolicy.