导出 Maven 依赖项并维护存储库文件夹结构

Export Maven dependencies and maintain repository folder structure

我想知道是否可以 export/copy 使用 Maven 管理的项目的依赖项,同时维护本地存储库中采用的文件夹结构。

我需要的根源 是我在我的本地存储库 (~8GB) 中积累了将近十年的大量工件。我不再处理以前分配的那些旧项目,这些旧项目吸引了大部分工件,现在,我需要将一个项目(约 650MB 的工件)所需的内容移动到另一台计算机。我不能只设置另一台计算机再次下载工件,因为这些工件中有许多是在以前的作业中从本地 Nexus 代理检索到的。而且,我没有这些工件的源代码,所以我不能只安装它们。

dependency:copy-dependencies 没有用,因为所有工件都只是简单地转储到一个文件夹中,而不是说 .m2\repository\mysql\mysql-connector-java.1.38\mysql-connector-java-5.1.38.jar

我相信我的问题也可以改写为“如何从本地 Maven 存储库中提取仅与一个特定项目相关的存储库子集?”

您实际上可以使用 Maven Dependency Plugin 及其 copy-dependencies 目标,正如您提到的那样。

你实际上错过的是它的useRepositoryLayout选项

Place each artifact in the same directory layout as a default repository.
example: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar.

  • Type: boolean.
  • Since: 2.0-alpha-2.
  • Required: No.
  • User Property: mdep.useRepositoryLayout.
  • Default: false.

您因此可以执行 - 作为示例 - 以下内容:

mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true \
    -DoutputDirectory=.m2/repository

如果您缺少某些依赖项,请从其他来源下载该依赖项并将其粘贴到您的 .m2(maven 本地存储库)文件夹中。