2015-10-06 82 views
0

我有以下Maven項目結構:行家 - 如何排除對整個模塊從戰爭

  • 項目A
    • sub-projectB < - 罐子
    • sub-projectC < - 戰爭
    • sub-projectD < - 戰

sub-projectCsub-projectD需要有sub-projectB作爲依賴關係。但是由sub-projectCsub-projectD構建的戰爭不應包括sub-projectB的依賴關係。該jar將在稍後分開包含在類路徑中(這是因爲sub-projectB是大型jar> 100MB,並且在戰爭中將其打包將在部署期間將戰爭從一個位置複製到另一個位置所需的大小和時間方面非常昂貴)。

如何從sub-projectCsub-projectD的戰包中排除sub-projectB的依賴關係?

其中一種方法是排除maven-war-plugin中的罐子列表。但是我們必須指定每個jar名稱或使用通配符。我們不能直接排除子模塊的依賴關係。有沒有更簡單的方法來做到這一點?

回答

2

這正是provided適用的範圍。這個範圍的每個依賴項將在編譯時使用,但它不會被包含在最終的戰爭中(因爲運行時容器提供提供)。

這樣,依賴性sub-projectB應該是,在sub-projectCsub-projectD POM:

<dependency> 
    <groupId>...</groupId> 
    <artifactId>sub-projectB</artifactId> 
    <version>...</version> 
    <scope>provided</scope> 
</dependency> 
+0

感謝一束Tunaki。這工作像一個魅力。 – Majjige