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

pka*_*mol 9 plugins purge maven maven-dependency-plugin

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

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

预期的行为是什么?

它会删除(并重新下载吗?)我的本地仓库中已存在的特定项目的所有依赖项(即我所在的目录)还是会删除我本地仓库的所有内容?

Tun*_*aki 9

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

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

发挥作用的几个因素是:

  • 默认情况下,插件会清除传递依赖项; 这可以通过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
Run Code Online (Sandbox Code Playgroud)

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