2017-08-29 34 views
0

我是maven的新手,並且繼承了我需要維護的舊應用程序。它有兩個提供的庫(由容器提供)。我想知道是否有任何方法可以在不修改pom.xml的情況下與所有依賴關係(包括提供的庫)生成一場戰爭。 (有很多)有沒有什麼辦法可以覆蓋從命令行所有libs的範圍?有沒有什麼辦法可以從命令行覆蓋「提供的」maven作用域?

我的挑戰是我正在處理具有相當深度依賴關係圖的企業應用程序,並且遍佈各處提供了很多依賴關係。作爲我的實驗的一部分,我想生成一個自包含的戰爭,並擁有所有的依賴關係。更新幾十個poms並且改變範圍不是我正在尋找的。有沒有辦法從命令行執行此操作?

+3

看起來你可能只需要改變創建戰爭的那一個pom。在這個pom中,指定當前「提供」所需範圍的依賴關係。 – Rob

+0

其實它幫助!試過很快,工作正常。我錯誤地認爲我需要更改整個層次結構中的所有pom.xml。感謝提示,將嘗試谷歌並瞭解魔術是如何發生的。乾杯! – shippi

回答

1

你只需要改變造成戰爭的那一個pom。在這個pom中,指定當前「提供」所需範圍的依賴關係。

Maven基於它所依賴的模塊計算戰爭項目的傳遞依賴關係,並使用提供的範圍引入這些特定的依賴關係。您可以將其視爲定義這些依賴關係的默認配置。你可以通過在你的war模塊中明確指定所需範圍的依賴關係來覆蓋默認(繼承)範圍。

在我看來,非戰爭模塊可能不應該將範圍設置爲提供,而應該將此決定留給實際會創建可運行工件的模塊(例如,您的戰爭模塊)。例如,如果您要製作一個胖jar來作爲獨立應用程序執行代碼(與提供這些依賴關係的容器中的戰爭相比),那麼您可能希望將它們包含在jar中。

相關問題