purge-local-repository 实际上清除了什么?

What does purge-local-repository actually purge?

我是 运行 Maven 项目目录中的以下命令:

mvn dependency:purge-local-repository

预期的行为是什么?

它会删除(并重新下载?)我本地存储库中已经存在的所有依赖项,用于 那个特定项目(即我所在的目录)还是会删除全部 我本地仓库的内容?

正在关注

http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

我们

dependency:purge-local-repository

从本地存储库中删除项目依赖项,并可选择重新解析它们。

默认情况下,purge-local-repository 将从本地存储库中删除与 运行 所在项目的每个依赖项(包括 t运行sitive)版本关联的所有文件:

Remove the project dependencies from the local repository, and optionally re-resolve them.

发挥作用的几个因素是:

  • T运行sitive 依赖项默认被插件清除;这可以通过 actTransitively 参数进行配置。
  • 默认情况下重新解析本地存储库中清除的所有工件;这可以通过 reResolve 参数进行配置。
  • 从本地存储库中清除的实际文件对应于与清除工件的版本关联的所有文件。例如,如果依赖项 foo:bar:1.0 被清除,路径 foo/bar/1.0/* 下的所有文件将被删除。这可以通过 resolutionFuzziness 参数进行配置(其默认值为 version):
    • artifactId 的值将清除路径下的所有文件,以清除工件的工件 ID。在上面的示例中,foo/bar/** 下的所有文件都将被清除(因此,所有版本都被删除)。
    • groupId 的值将清除路径下的所有文件,以清除工件的组 ID。在上面的示例中,foo/** 下的所有文件都将被清除(因此,所有工件 ID 的所有版本都将被删除)。
    • file 的值只会清除被清除工件的文件。在上面的示例中,只有文件 bar-1.0.jar* 将被删除(这包括它们可能拥有的任何 sha1)。它不会清除关联的 POM 文件。

您可以通过打印具有 list 目标的项目的所有依赖项列表来查看哪些工件将被清除:

mvn dependency:list

如果您决定不清除 t运行sitive 依赖项,可选择将 excludeTransitive 添加到此命令。

使用相同的清除方法,但在细节上, 如果项目 A 和项目 B (Jar) 在本地构建并且项目 A 依赖于 B(在本地 Repo 中)可以像

mvn dependency:purge-local-repository -Dinclude=com.xxxx.projectB:projectB

并在项目 A 中添加依赖项将解决问题。

<dependency>
                <groupId>com.xxxx.projectB</groupId>
                <artifactId>projectB</artifactId>
                <version>${project.version}</version>
            </dependency>

希望这对您有所帮助,