簡體   English   中英

依賴項取決於項目中已使用的舊版本庫

[英]A dependency depends on older version of a library already used in the project

在我看來,這聽起來像是一個普遍的問題,所以我想知道是否存在一種通用的推薦方式來應對這些情況,而不管所使用的生成/依賴管理工具(在我的情況下為Gradle)。 我可以想象,無論使用哪種構建工具,都會出現此問題,即使在一個小型項目中,該項目很少手動處理依賴關系,並且只是使用jar命令使用Java來構建。

我的Java項目使用Velocity 1.7,因此它的類路徑中具有Velocity 1. 7 JAR。

然而,這個項目還采用ReportNG,這取決於速度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,但是它不一定能工作,並且如果有一種處理這些情況的干凈方法,我想避免這樣做。

雖然可以將兩個JAR都添加到類路徑中,但是默認情況下,Java將使用它找到的包含給定類的第一個JAR,這取決於您構造類路徑的方式會對系統產生不良影響。

為了避免這種情況,Gradle(如之前的Maven)在構建時解決了依賴沖突。

對於Gradle,默認的依賴項解析使用最新的依賴項,在您的情況下,這表示Velocity 1.7。

使用Maven, 依賴關系解析是通過使用與您的項目最接近的依賴關系來實現的,在您的情況下,當您的項目聲明對Velocity 1.7的依賴關系時,意味着將使用該版本。

使用這兩種方法,您的系統(或更確切地說是ReportNG)是否可以在Velocity 1.7上運行都取決於您進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM