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

标签 maven maven-3 maven-dependency-plugin

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

我需要的根源是我在本地存储库(~8GB)中积累了近十年的大量 Artifact 。我不再处理以前任务中那些吸引了大部分 Artifact 的旧项目,现在,我需要将单个项目(约 650MB Artifact )所需的内容移动到另一台计算机上。我不能只是设置另一台计算机再次下载 Artifact ,因为在以前的分配中,许多 Artifact 是从本地 Nexus 代理检索的。此外,我没有这些 Artifact 的源代码,所以我不能只安装它们。
dependency:copy-dependencies没有用,因为所有 Artifact 都被简单地转储到一个文件夹中,而不是说 .m2\repository\mysql\mysql-connector-java\5.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

关于maven - 导出 Maven 依赖项并维护存储库文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35999109/

相关文章:

java - JSR352:注释@Named 在 Java SE 中不起作用

java - 如何仅在 maven-jarsigner-plugin 发布时配置 TSA 参数

maven - 使用 maven-remote-resources-plugin 并指定 resourcesDirectory

java - "Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution"

maven - 是否有显示插件依赖树的 Maven 插件?

maven - 什么是 Maven 依赖项 :purge-local-repository supposed to do?

java - 来自 Eclipse 的 Spring Boot maven 项目在 Intellij 中不起作用

java - 无法在 OS X 上初始化类 org.bytedeco.javacpp.avutil 以及 JavaCV 中的 Maven

java - 在插件中使用maven版本

java.lang.UnsupportedOperationException : This feature requires ASM8_EXPERIMENTAL 异常