强制maven更新

M4k*_*4ks 682 maven

我在其他计算机上导入了我的工作项目,因此它开始下载依赖项.

显然在此期间我的互联网连接崩溃了.现在我得到:

为漫画构建错误; org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目漫画上执行目标测试:无法解析项目漫画的依赖项测试:漫画测试:war:0.0.1-SNAPSHOT:无法解析以下工件:org.springframework:spring- context:jar:3.0.5.RELEASE,org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,org.hibernate:hibernate-core:jar:3.6.0.Final,org.hibernate:hibernate-commons-注释:jar:3.2.0.Final,org.aspectj:aspectjweaver:jar:1.6.8,commons-lang:commons-lang:jar:2.5,

mysql:mysql-connector-java:jar:5.1.13:无法传输org.springframework:来自http://repo1.maven.org/maven2的 spring-context:jar:3.0.5.RELEASE 缓存在本地存储库中,在中心的更新间隔过去或强制更新之前,不会重新尝试解析.

原始错误:无法传输工件org.springframework:spring-context:jar:3.0.5.RELEASE from central(http://repo1.maven.org/maven2):60000后没有收到回复

我不知道如何强制maven更新?

lwp*_*ro2 1520

mvn clean install -U
Run Code Online (Sandbox Code Playgroud)

-U表示强制更新快照依赖项.发布依赖项无法以这种方式更新.

  • 我同意lwpro2,这也解决了我的问题.只做mvn clean是不够的.Navi的答案还不足以解决问题. (28认同)
  • 这似乎并没有实际更新快照依赖关系jar,只是元数据. (2认同)

Ayu*_*pta 88

-U 似乎强制更新所有依赖项.

如果您想要在没有干净的情况下更新单个依赖项,或者-U您可以从本地存储库中删除它,然后进行构建.

以下示例如果要更新slf4j-api 1.7.1-SNAPSHOT:

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile
Run Code Online (Sandbox Code Playgroud)


Fuz*_*ulz 78

如果您的本地存储库以某种方式被释放为发布jar而不是快照(-U并且--update-snapshots只更新快照),则可以使用以下方法清除本地存储库:

 mvn dependency:purge-local-repository
Run Code Online (Sandbox Code Playgroud)

您可能希望再次清理并安装:

 mvn dependency:purge-local-repository clean install
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html

  • 一旦我做了`mvn dependency:purge-local-repository`,它就会再次重新下载所有依赖项,这正是我想要的 (5认同)

Rob*_*eiz 53

这里的所有答案都不适用于我.我用锤子方法:

find ~/.m2/ -name "*.lastUpdated" | xargs rm
Run Code Online (Sandbox Code Playgroud)

这解决了问题:-)


Ami*_*kya 43

你可以有效地做到Eclipse IDE.当然,如果你正在使用它.

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases
Run Code Online (Sandbox Code Playgroud)

  • 这只是设置命令行选项-U (5认同)

Gla*_*ier 25

以防万一有人只想更新项目的快照依赖项并且不想安装工件:

mvn dependency:resolve -U
Run Code Online (Sandbox Code Playgroud)

不要忘记在IDE中重新导入依赖项.在IDEA中,您需要右键单击pom文件并选择Maven - > Reimport


mer*_*ejy 13

如果您不确定本地存储库中的内容,我建议使用以下选项触发构建:

-Dmaven.repo.local=localrepo
Run Code Online (Sandbox Code Playgroud)

这样你就可以确保建立一个洁净室环境.

  • 此命令表示使用文件夹localrepo作为本地存储库.这对于单个项目工作区来说很好,但是如果你有多个项目则很糟糕,而很少依赖于另一个项目.然后你最好给出像-Dmaven.repo.local =/data/my/localrepoDir这样的完整路径 (5认同)

raj*_*eev 8

在我的情况下,我首先 仍然显示相同的错误,然后我关闭项目和agian重新打开它.最终工作.
__CODE__


小智 6

如果您使用的是Eclipse IDE,则:

  • 选择项目。
  • 按 alt+F5,将弹出更新 Maven 项目的窗口。

  • 选中 - 强制更新快照/发布并单击确定。

如果使用Intellij IDE

  • 转到设置/Maven
  • 检查总是更新快照


ank*_*mon 6

以前版本的 maven 在使用 -U 和 mvn clean install 时不会强制检查丢失的版本,仅检查快照,尽管较新的版本支持此功能。

对于仍在与以前的版本作斗争的人来说,以下内容可能会有所帮助 -

在 Windows 上:

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i
Run Code Online (Sandbox Code Playgroud)

在 Linux 上:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

每当 maven 由于任何原因(连接/不存在等)无法下载依赖项时,它都会在 $home/.m2 目录下相应文件夹中的 dependency-name.lastUpdate 文件中添加“.error=无法传输工件”。删除这些文件将迫使 Maven 再次尝试获取依赖项。


小智 5

我使用了 IntelliJ IDE,我遇到了类似的问题,为了解决,我单击了 Maven 选项卡中的“为所有项目生成源和更新文件夹”。

在此处输入图片说明


小智 5

mvn clean install -e -U -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)
  1. -e详细异常情况
  2. -U强制更新
  3. -DskipTests不执行测试用例,而是编译测试用例类,在target/testclass下生成对应的类文件。
  4. -Dmaven.test.skip=true,不要执行测试用例或编译测试用例类。使用maven。测试。Skip 不仅跳过运行单元测试,还跳过编译测试代码。

一个小建议。如果使用IntelliJ Idea编译器,建议清理缓存