使用maven-dependency-plugin清除伪像

时间:2017-01-15 18:46:16

标签: maven maven-3 maven-plugin

我想运行mvn命令来摆脱~/.m2/repository/here/goes/my/groupid下的所有文物。为了做到这一点,我运行:

mvn -pl my-module dependency:purge-local-repository -DresolutionFuzziness=groupId -Dinclude=<here-goes-my-groupid> -DactTransitively=false -DreResolve=false -Dverbose=true

只要当前artefact(my-maven-plugin)的当前版本(3.0.0)位于本地仓库中,这样就可以了。

如果当前人工制品(my-maven-plugin)的当前版本(3.0.0)在本地仓库中(例如,当地的人工制品只有旧版本回购,比如说2.9.0),什么都没有被清除:

[INFO] --- maven-dependency-plugin:3.0.0:purge-local-repository (default-cli) @ my-maven-plugin ---
Downloading: https://repo.maven.apache.org/maven2/here/goes/my/groupid/my-maven-plugin/3.0.0/my-maven-plugin-3.0.0.jar
[INFO] Unable to resolve all dependencies for : <here-goes-my-groupid>:my-maven-plugin:3.0.0. Falling back to non-transitive mode for initial artifact resolution.
[INFO] No artifacts included for purge for project: <here-goes-my-groupid>:my-maven-plugin:maven-plugin:3.0.0

我不明白为什么maven-dependency-plugin尝试从maven central下载任何东西。它应该做的就是以递归方式删除本地文件系统中的文件夹。

如果当前人工制品的当前版本是否在本地仓库中,我如何强制清除给定groupId下的所有人工制品?

1 个答案:

答案 0 :(得分:-1)

include期望清除的依赖项groupId与项目的依赖项完全相同。 选项resolutionFuzzinessactTransitivelyreResolve仅在满足上述groupId条件时适用。 我猜想,这可能是因为插件开发人员希望防止意外清除项目组之外的工件。不过这是我的疯狂猜测。

放松! manualInclude来了。不管项目的groupId,它都可以清除工件。

尝试一下:

mvn dependency:purge-local-repository -DmanualInclude=<group-id>:<artifact-id>

或者这个:

mvn dependency:purge-local-repository -DmanualIncludes=<group-id>:<artifact-id>

但是,区别在于,与include不同的是,无论您为reResolve提供什么值,它都不会在清除后重新解析工件。

This条件跳过重新解析。