这对我来说听起来像是一个普遍的问题,所以我想知道是否有一种通用的推荐方法来处理这些情况,而不管使用的构建/依赖管理工具(在我的例子中是 Gradle)。我可以想象无论构建工具如何都会出现这个问题,即使在一个手动处理少量依赖项并且只是使用 Java 使用jar
命令构建的小项目中也是如此。
我的 Java 项目使用 Velocity 1.7,因此它的类路径中有 Velocity 1. 7 JAR。
然而,这个项目也使用 ReportNG,它依赖于 Velocity 1. 4(它甚至Class-Path: velocity-dep-1.4.jar
在它的清单中有条目,加上它下载的 zip 包含velocity-dep-1.4.jar
和它的主页明确提到velocity-dep-1.4.jar
必须在类路径中)。
我想知道如何避免在我的类路径中包含两个 Velocity 版本的 JAR,这可能是我看到的奇怪行为的原因,而且在任何情况下听起来都不是一个好主意。
我将尝试让 ReportNG 使用 Velocity 1.7 而不是 1.4,但它不一定有效,如果有处理这些情况的干净方法,我想避免这样做。