對不起,我的新手問題。java/maven如何在運行時解決依賴衝突
假設我有一個包A,它聲明B,C作爲它的maven文件中的依賴項。 B,C使用兩個不同版本的log4j進行日誌記錄。我有幾個問題:
- 如果我使用maven,並聲明B,C作爲A的依賴關係。當maven從mavencentral repo中抽取B,C的神器(.jar)時。做B,C jar文件包含log4j類文件或僅包含它們自己的編譯文件(B,C自己的源代碼,不依賴項)。
- 如果我理解正確,當構建發生時,最後,構建中將只有一個log4j類文件(即使B,C使用不同版本的log4j)。在這裏選擇要創建哪個版本的log4j?這是否意味着我需要將log4j聲明爲A依賴項(在A的maven構建文件中) - 並且該版本將被選擇爲構建版本。
- B,C可能會使用完全不同的log4j版本。這裏的API可能完全不同。它應該在運行時造成問題?但事實上,這是非常罕見的?爲什麼這樣?
謝謝。
Maven有一個假設,可以始終使用較新版本的工件而不是舊版本。如果不是,則需要在依賴項中使用排除開始播放。 –