Maven 组装插件 : how to include provided dependencies of transitive dependencies

标签 maven maven-assembly-plugin maven-dependency-plugin

似乎包括与 provided 的直接依赖关系范围很好理解。似乎还包括带有 runtime 的传递依赖项。范围也很容易实现。

但是我如何才能包含两个间接级别的依赖项?

例子:

A --> B --> C

其中 A 依赖于 B(编译范围),B 依赖于 C(提供的范围)。

我要 A检索 C (例如:在本地下载 jar),无论是通过程序集描述符还是 maven-dependency-plugin:copy-dependencies或其他一些机制。

我已经尝试了上述两个插件的所有选项组合。这两种方法都没有涵盖这种情况。他们都得到 B (即使 B 更改为提供的依赖项),以及 B 的任何编译范围依赖项,但未提供 B 的依赖项。

我想我正在尝试做一些类似于我的项目的阴影表示但没有解包依赖项的事情。

当然,我不想在 A 的 pom 中枚举 B 的所有依赖项 - 我想隐式和递归地检索(然后打包)所有依赖项。

最佳答案

你将无法做到这一点。它不是 maven-assembly-plugin 的限制,但是 Maven 考虑传递依赖的方式。范围内的传递依赖 provided将始终被省略(请参阅文档中的 this table)。

有一个关于此的开放错误( MNG-2205 ),但我认为它不会很快得到修复。这确实是预期行为,因为 provided依赖项,根据名称,应该在运行时提供。

关于Maven 组装插件 : how to include provided dependencies of transitive dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830534/

相关文章:

maven - 从没有java源的类构建maven jar

java - 如何在 Visual Studio Code 上使用 web.xml 调试 spring mvc Web 应用程序?

java - 在注册表中找不到数据格式 - Camel

java - 使用maven和eclipse生成元模型类(JPA,Maven,Eclipse)

maven- assembly-plugin png 和 ico 损坏

java - 如何告诉 maven-dependency-plugin 项目中使用了 artifact?

java - maven 程序集 - jar 错过了自己的类(class)

maven-2 - 如何在 Maven 中为输出 Artifact 加时间戳?

maven - 如何在 Maven 程序集的 basedir 中包含所有文件(不是目录)

maven - 如何重命名最新快照版本以包含版本号