似乎包括与 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/