2012-09-07 79 views
4

我必須在我的pom.xml中逐一定義每一個彈簧庫,還是有一些多包裝?使用maven下載每個彈簧庫

我發現,例如,當我讓maven下載spring-core時,它也下載了spring-asm。

有更多這樣的包或類似的快捷方式....?

+0

你是否真的需要所有的春天? –

+0

@AndrewLogvinov:aop,asm,beans,context,core,expression,jdbc,oprm,transaction,web,web-servlet,所以多數民衆贊成在很多。 – Jaanus

+1

其中大部分將依賴於bean,上下文,核心等。您可以僅列出葉庫上的依賴關係。另外,在寫這個問題並等待答案的時間裏,你可以輸入其中的11個元素的''元素:) –

回答

5

有可能重複的位置:Maven - include all submodules of a pom as dependencies in another module

簡短的答案是否定的。長期的答案是,即使你能這樣做也不是一個好主意。

春天用來提供捆綁groupId=org.springframework artifactId=springgroupId=org.springframework artifactId=spring-all。由於各種原因(我找不到鏈接),Spring認爲這是一個不好的做法,我傾向於同意。

做的最好的事情是,如果你真的要包括所有子模塊春天是使用父勁歌和屬性來表示的版本...如:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.snaphop</groupId> 
    <artifactId>snaphop-parent</artifactId> 
    <version>0.0.53-SNAPSHOT</version> 
    <name>snaphop-parent</name> 
    <packaging>pom</packaging> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.6</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <spring.version>3.1.0.RELEASE</spring.version> 
    </properties> 

..skip some lines 

<dependencyManagement> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

你必須在這裏閱讀關於家長poms:http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation(或只是谷歌)。

另一種選擇是讓你自己的虛擬項目與所有的春天依賴關係,並依賴於它。

話雖如此,我真的建議你明確選擇你的依賴,因爲它可以真正幫助模塊化/解耦/重構你的項目在未來。

+1

直接使用某些類沒有明確依賴提供它的工件,即使用依賴關係的傳遞依賴關係,這被認爲是不好的做法。如果您的依賴關係在更高版本中刪除傳遞依賴項,則代碼將失敗(無論是在編譯時還是在運行時)。 –

+0

@FrankPavageau我同意(我一定沒有說清楚),這是一個壞主意。我建議他明確說明他的依賴或使用父類。虛擬項目的想法是警察出局。 –

+0

哦,那很清楚,我只是想給出一個例子,說明爲什麼這是一個壞主意。我同意你的其他評論,這不是工作中花費時間最長的部分,所以你花了一點時間來做正確的事情。你總是可以使用'mvn dependency:analyze'來獲得幫助。 –