2017-06-06 288 views
1

我剛剛注意到,我的戰爭包含woodstox-core-asl-4.4.1.jarwoodstox-core-5.0.2.jar。它們是同一個庫的兩個不同版本,但庫改變了groupId和artifactId。此外,我的戰爭中包含兩個作爲我的項目的兩個不同模塊的傳遞依賴項。Maven依賴別名

我知道我可以使用exclusions來刪除舊版本的庫,但在這種情況下,我還應該明確地「包含」新版本,以防單獨使用模塊(這不與另一個包括woodstox-core-5.0.2.jar)。

我不喜歡這個解決方案。有沒有什麼辦法可以聲明woodstox-corewoodstox-core-asl的別名,這樣Maven只包含其中的一個罐子?

一個類似的問題影響老的Spring 2.x,它發佈了所有功能於一身的工件和較小的分離的工件。不過,我認爲最常見的問題是與修改groupId和/或artifactId的工件有關的問題。

回答

0

沒有辦法做到這一點。 Maven不理解別名的概念。如果是這樣,那麼就會打開整個其他類型的依賴地獄的大門。

你所描述什麼 - 添加<exclusion/><dependency/>它爲需要再明確將重命名的神器新<dependency/>所有依賴 - 是你可以在瞬間實現這一目標的唯一途徑。

+0

我發現了一個有關工件重定位的Maven指南:https://maven.apache.org/guides/mini/guide-relocation.html,但它描述了工件發佈者的過程,而不是用戶。我想伍德斯托克斯的作者並沒有遵循它。 – Pino

+0

Maven工件重定位是另一回事。它在您決定不再需要爲庫使用相同的工件座標時使用。您可以更改'groupId','artifactId','version'和其他一些工件座標。這是作爲圖書館的所有者和部署者在服務器端執行的。如果您只是使用庫的開發人員,而對於您來說這是第三方工件,那麼您無法將其用於所需的「別名」。 – carlspring