我正在 maven 项目目录中运行以下命令:
清理target
mvn clean -U
清理该项目依赖的本地仓库中的maven包
mvn dependency:purge-local-repository
它会删除(并重新下载?)我本地存储库中已存在的所有依赖项 那个特定的项目 (即我所在的目录)还是会删除 全部 我本地仓库的内容?
最佳答案
默认情况下, purge-local-repository 将从本地存储库中删除与其运行的项目的每个依赖项(包括传递)的版本相关联的所有文件:
Remove the project dependencies from the local repository, and optionally re-resolve them.
发挥作用的几个因素是:
- 默认情况下,插件会清除传递依赖项;这可以通过 actTransitively 进行配置范围。
- 默认情况下,所有从本地存储库中清除的 Artifact 都会重新解析;这可以通过 reResolve 进行配置范围。
- 从本地存储库中清除的实际文件对应于与已清除 Artifact 的版本相关联的所有文件。例如,如果依赖项
foo:bar:1.0
已清除,路径foo/bar/1.0/*
下的所有文件将被移除。这可以通过 resolutionFuzziness 进行配置参数(其默认值为version
): artifactId
的值将清除被清除 Artifact 的 Artifact ID 路径下的所有文件。在上面的示例中,foo/bar/**
下的所有文件将被清除(因此,所有版本都被删除)。groupId
的值将清除路径下的所有文件到要清除的 Artifact 的组 ID。在上面的示例中,foo/**
下的所有文件将被清除(因此,所有 Artifact ID 的所有版本都将被删除)。file
的值只会清除正在清除的 Artifact 的文件。在上面的例子中,只有文件bar-1.0.jar*
将被删除(这包括他们可能拥有的任何sha1
)。它不会清除关联的 POM 文件。- 您可以通过使用 list 打印项目的所有依赖项列表来查看将要清除哪些 Artifact 。目标:
可选地添加 excludeTransitive 到此命令,如果您决定不清除传递依赖项。mvn dependency:list
演示: