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

时间:2016-11-02 14:03:20

标签: maven plugins maven-dependency-plugin purge

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

mvn dependency:purge-local-repository

预期的行为是什么?

是否会删除(并重新下载?)本地仓库中已存在的所有依赖项该特定项目(即我所在的目录)或将删除所有< / strong>我当地回购的内容?

3 个答案:

答案 0 :(得分:7)

默认情况下,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

答案 1 :(得分:1)

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

我们

Array
(
    [url] => http://example.com/api/myendpoint
    [content_type] => text/html
    [http_code] => 404
    [header_size] => 163
    [request_size] => 206
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.00557
    [namelookup_time] => 0.004207
    [connect_time] => 0.004851
    [pretransfer_time] => 0.004874
    [size_upload] => 0
    [size_download] => 579
    [speed_download] => 103949
    [speed_upload] => 0
    [download_content_length] => 579
    [upload_content_length] => 0
    [starttransfer_time] => 0.005555
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => ::ffff:XX:XX:XX:XX
    [certinfo] => Array
        (
        )

    [primary_port] => 80
    [local_ip] => ::ffff:YY.YY.Y.YY
    [local_port] => 42744
)

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

答案 2 :(得分:0)

使用相同的清除但详细信息,  如果项目A和项目B(Jar)建立在本地和项目A依赖于B(在本地回购中)可以解决,如

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

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

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

希望这有帮助,