2017-04-25 73 views
0

我有一個包含3個模塊(api,dictionary,webapp)的項目「framework-ws」。 該項目使用了多項其他網絡服務項目的父項目。在哪裏可以使用maven pom.xml中的哪個範圍

例如,項目「core-ws」對於父項具有「framework-ws」。它還包含3個模塊(api,字典,webapp)。 這些模塊中的每一個都具有作爲依賴性的框架。

  • 芯-WS-API =>框架-WS-API
  • 芯-WS-字典=>框架-WS-字典
  • 芯-WS-web應用=>框架-WS-web應用
  • (subproject => dependency)

現在我有其他的依賴項(例如lombok)在每個項目(框架+子項目)中使用。

我不明白我需要聲明這種依賴關係。

  1. 在具有「提供」範圍父項目,並在沒有範圍
  2. 在沒有範圍父項目的每個 兒童的項目,並在每個 兒童項目
  3. 另一種不依賴我沒有想到的解決方案

第二個解決方案似乎更清潔,因爲我不需要在每個pom.xml中重複依賴關係。但我不知道這是否是最佳做法。

編輯:這是項目結構的圖片。 enter image description here

回答

1

在你的父POM使用依賴性管理部分看到https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
在你的孩子

然後POM將要使用的依賴,但不指定版本,即版本將在父曾經被指定爲所有的孩子。您仍然需要在每個模塊中包含依賴項。

<dependencies> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-io</artifactId> 
    </dependency> 
</dependencies> 

在範圍閱讀本https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope默認範圍是編譯它是什麼,你通常會使用。我認爲你在閱讀你的問題時對範圍的含義感到困惑。

+0

謝謝,這解決了我的問題的一部分。依賴管理正是我不需要複製代碼的東西。 我仍然不明白「提供」範圍何時有用。也許我不需要它爲我的項目。我將搜索關於這個範圍的更多信息。 – YLombardi

+0

提供的是當你想對某些東西進行編譯時,讓其他東西,通常是服務器「提供」實現。最明顯的例子是servlet API。 –