Maven 清除本地存储库实际上清除了什么?

Maven 清除本地存储库实际上清除了什么?,maven,plugins,maven-dependency-plugin,purge,Maven,Plugins,Maven Dependency Plugin,Purge,我正在maven项目目录中运行以下命令: mvn dependency:purge-local-repository 预期的行为是什么 它会删除(并重新下载?)我的本地回购协议中已存在的该特定项目的所有依赖项(即我所在的目录),还是会删除我的本地回购协议的所有内容 我们认为 dependency:purge-local-repository 从本地存储库中删除项目依赖项,并可以选择重新解析它们。默认情况下,将从本地存储库中删除与运行项目的每个依赖项版本(包括可传递版本)相关联的所有文件:

我正在maven项目目录中运行以下命令:

mvn dependency:purge-local-repository
预期的行为是什么

它会删除(并重新下载?)我的本地回购协议中已存在的该特定项目的所有依赖项(即我所在的目录),还是会删除我的本地回购协议的所有内容

我们认为

dependency:purge-local-repository
从本地存储库中删除项目依赖项,并可以选择重新解析它们。

默认情况下,将从本地存储库中删除与运行项目的每个依赖项版本(包括可传递版本)相关联的所有文件:

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

起作用的几个因素是:

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


如果您决定不清除可传递的依赖项,可以选择添加到此命令。

使用相同的清除,但要详细说明, 如果项目A和项目B(Jar)构建在本地上,而项目A依赖于B(在本地回购协议中),则可以这样解决

mvn依赖项:清除本地存储库-Dinclude=com.xxxx.projectB:projectB

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

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

com.xxxx.projectB
项目B
${project.version}
希望这有帮助

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