San*_*ors 6 java velocity jar dependency-management reportng
这对我来说听起来像是一个普遍的问题,所以我想知道是否有一个通用的推荐方法来处理这些情况,无论使用什么构建/依赖管理工具(在我的例子中是 Gradle)。我可以想象,无论使用什么构建工具,都会出现这个问题,即使是在手动处理少数依赖项并且仅使用 Java 使用命令构建的小项目中也是如此jar。
我的 Java 项目使用 Velocity 1.7,因此它的类路径中有 Velocity 1. 7 JAR。
然而,该项目还使用 ReportNG,它依赖于 Velocity 1. 4Class-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,但它不一定有效,如果有一种干净的方法来处理这些情况,我想避免这样做。
虽然您可以将两个 JAR 添加到类路径中,但默认情况下,Java 将使用它找到的包含给定类的第一个 JAR,这可能会对您的系统产生不良影响,具体取决于您构造类路径的方式。
为了避免这种情况,Gradle(就像之前的 Maven)在构建时解决依赖冲突。
对于 Gradle,默认依赖项解析使用最新的依赖项,在您的情况下意味着 Velocity 1.7。
使用 Maven依赖项解析是通过使用与您的项目最接近的依赖项来实现的,在您的情况下,当您的项目声明对 Velocity 1.7 的依赖项时,意味着将使用该版本。
对于这两种方法,您的系统(或者更确切地说 ReportNG)是否可以与 Velocity 1.7 一起工作取决于您的测试。
| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |