【问题标题】:How to do remove a projects artifacts from the local maven repo?如何从本地 Maven 仓库中删除项目工件?
【发布时间】:2013-01-31 17:43:07
【问题描述】:

在本地多模块项目上运行 mvn install 时,它会构建项目工件并将其安装到本地存储库中。 mvn clean 似乎清理了我的项目特定目标目录。

我在 maven 中使用什么命令来让它从本地 repo 中卸载我的项目模块?例如,我的项目输出 foo-0.1.jar 和 bar-0.2.jar 我希望将它们从我的本地仓库中删除,而不必亲自去那里删除它们。

【问题讨论】:

  • 好吧,通常我只是...从文件系统中删除它们...
  • 单个项目有 17 个,运行脚本删除它们很烦人,所以我宁愿 maven 这样做,因为它知道那里有什么。
  • 如果你的项目输出 foo-0.1.jar 从 maven 的角度来看是一个永远不会从本地存储库中删除的版本。那么第一个问题:你为什么喜欢删除它们?

标签: maven maven-3


【解决方案1】:
mvn build-helper:remove-project-artifact

【讨论】:

  • 只从存储库中删除当前项目!用法:导航到项目并运行命令
【解决方案2】:

您可以从本地存储库中清除工件,但您为什么喜欢这样做?除此之外,您还可以通过maven-dependency-plugin

这将清除所有项目和依赖项工件

mvn dependency:purge-local-repository -DreResolve=false

这可能会受到补充命令行参数的影响(请参阅文档)了解更多详细信息。

【讨论】:

  • 我有 mvn installed 一些工件。在运行mvn dependency:purge-local-repository 之后,依赖于该工件的其他项目仍然可以构建。如果该工件已从本地存储库中删除,他们从哪里获得该工件?
  • dependency:purge-local-repository远程远程当前 pom 本身指定的工件。它只是“重新加载”所有依赖项。
【解决方案3】:

最好是实施发布策略,即只要正在开发的工件在版本后面加上SNAPSHOT。然后,当您运行 install 时,Maven 会自动更新本地存储库中的工件。完成开发后,删除 SNAPSHOT 并发布版本(即通过部署)。如果需要进一步开发,您可以增加版本号并使用 SNAPSHOT 再次附加它。

【讨论】:

  • 这是一个特别糟糕的策略,它会阻止您检测到循环依赖或丢失的工件,直到为时已晚。
  • 怎么样?在我看来,MrsTang 正在提议使用标准的 maven 版本控制……在开发期间在版本中使用 -SNAPSHOT,然后在发布时将其删除。虽然我不确定它是否真的解决了用户在下载依赖项时面临的挑战,但我不了解使用标准版本控制如何防止您检测到循环依赖项或丢失的工件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 2016-12-02
  • 2019-05-15
  • 1970-01-01
  • 2013-06-26
  • 2021-06-23
相关资源
最近更新 更多