我正在开发一个依赖 X 的项目。X 反过来又依赖于 Y。
我曾经在项目的 pom.xml 中明确包含 Y。然而,它并没有被使用,为了让事情更干净,我把它作为依赖添加到 X 的 pom 中。 X 被标记为发布依赖项。
问题是从我的项目的 pom 中删除 Y 并将其添加到 X 的 pom 后,我的项目没有在 mvn -U clean package
上选择它。我知道 -U 更新快照但不知道发布。
那么,不删除 ~/.m2/repository 目录如何强制重新下载 X 的 pom?此外,我尝试运行 dependency:purge-local-repository
,但它也不起作用。
X
的 pom,那么它应该构成一个新版本,即使它只是一个补丁号更改:1.3
-> 1.3.1
。所以,这将从一开始就消除这个问题。
dependency:purge-local-repository
应该可以工作,它不会删除它吗?
您无法让 Maven 重新下载依赖项,但您可以做的是清除使用 mvn dependency:purge-local-repository
错误下载的依赖项
请参阅:http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
这会查找当前项目的所有传递依赖项的列表,删除它们,然后重新下载它们。如果你想在每次构建中运行它,你甚至可以将它作为插件添加到你的 pom 中。
我刚刚删除了我的 ~/.m2/repository 并强制重新下载;)
基于 Ali Tokmen 的回答。我设法使用以下命令强制删除单个特定的本地依赖项:
mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils
这样,它会从我的 .m2/repository 中删除 utils
,并且当我继续运行 mvn clean install
时,它总是会重新下载 utils
JAR 依赖项。如果您想要更程序化的内容,还可以查看 -Dinclude=...
选项。
我认为以下命令可能会对您有所帮助!
mvn -U clean install
项目右键单击-> Maven -> 更新项目并选中屏幕截图中的复选框。它也会更新版本:)
https://i.stack.imgur.com/peNZX.png
-U
命令,其中“某种”更新发布 stackoverflow.com/a/29020990/32453 但不是 OP 正在寻找的方式:)
mvn clean install -U
-U 表示强制更新依赖项。
如果您想在没有 clean 或 -U 的情况下更新单个依赖项,您可以将其从本地存储库中删除,然后构建。
如果您知道 X
的组 id,则可以使用此命令重新下载所有 X
及其依赖项
mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x
它与建议使用 dependency:purge-local-repository
的其他答案做同样的事情,但它只删除并重新下载与 X
相关的所有内容。
当您将它添加到 X 时,您应该增加 X 的版本号,即 X-1.2 然后 X-1.2 应该已经安装/部署,您应该将项目对 X 的依赖更改为依赖于新版本 X-1.2
如果您真的想强制下载所有依赖项,可以尝试重新初始化整个 maven 存储库。就像在 this article 中已经描述的那样,您可以使用:
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
只需删除 ~/.m2/repository...../actual_path 无效 LOC 所在的位置,因为它会强制重新下载已删除的 jar 文件。不要删除整个存储库文件夹,而是删除错误所在的特定文件夹。
删除 ~/.m2/repository
将解决您的问题。但是,如果您仍需要保留旧的 ~/.m2/repository
,您可以暂时更改 maven 本地路径。
如果您正在使用 IntelliJ,只需转到 Maven 设置并将本地存储库路径更改为其他位置。您可能需要勾选附近的覆盖复选框。
https://i.stack.imgur.com/fshTJ.png
转到构建路径...删除您添加的现有maven库...单击添加库...单击maven托管依赖项...然后单击maven项目设置...检查解决maven依赖项复选框..它将下载所有maven依赖
上面提供的大多数答案都可以解决问题。
但是,如果您使用 IntelliJ 并希望它自动为您修复它,请转到 Maven 设置。
构建、执行、部署 -> 构建工具 -> Maven
https://i.stack.imgur.com/U3QUX.jpg
禁用脱机工作
启用始终更新快照(需要时切换)
不定期副业成功案例分享
mvn dependency:purge-local-repository clean package
,可能是一个项目删除本地存储库中的相同依赖项,而另一个项目正在运行编译。如何避免?MAVEN_OPTS
环境变量强制 maven 从标准.m2/respository
位置的不同文件夹下载/使用依赖项,如下所示:export MAVEN_OPTS="-Dmaven.repo.local=${PROJECT_DIR}/maven.repository
这将防止 maven 使用普通文件夹中的任何依赖项,而是使用Dmaven.repo.local=
指定的依赖项。