【发布时间】:2017-03-15 21:08:48
【问题描述】:
我在 Maven 项目目录中运行以下命令:
mvn dependency:purge-local-repository
预期的行为是什么?
它会删除(并重新下载?)我的本地存储库中已经存在的所有依赖项,用于 那个特定项目(即我所在的目录)还是会删除 all 我的本地仓库的内容?
【问题讨论】:
标签: maven plugins maven-dependency-plugin purge
我在 Maven 项目目录中运行以下命令:
mvn dependency:purge-local-repository
预期的行为是什么?
它会删除(并重新下载?)我的本地存储库中已经存在的所有依赖项,用于 那个特定项目(即我所在的目录)还是会删除 all 我的本地仓库的内容?
【问题讨论】:
标签: maven plugins maven-dependency-plugin purge
默认情况下,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
如果您决定不清除传递依赖项,则可选择将excludeTransitive 添加到此命令。
【讨论】:
使用相同的清除但在细节上, 如果项目 A 和项目 B (Jar) 在本地构建并且项目 A 依赖于 B (在本地 Repo 中) 可以像
一样解决mvn 依赖:purge-local-repository -Dinclude=com.xxxx.projectB:projectB
在项目 A 中添加依赖项将解决问题。
<dependency>
<groupId>com.xxxx.projectB</groupId>
<artifactId>projectB</artifactId>
<version>${project.version}</version>
</dependency>
希望这会有所帮助,
【讨论】:
关注
http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
我们
dependency:purge-local-repository
从本地存储库中删除项目依赖项,并可选择重新解析它们。
【讨论】: