2011-03-11 155 views
5

如果我有一些libs在其他版本中具有其他依賴項,例如:commons-logging-1.0.4.jar(省略與1.1.1衝突)和commons-logging-1.1.1。罐。maven上的依賴衝突

對此的最佳做法是什麼,通知排除相關依賴關係中的衝突(通過標記),或者什麼都不做,因爲lib被省略了?是否有任何問題沒有指定排除POM中的依賴關係?

的例子,解釋如何在POM解決這個問題,I'm把下面的指令來解決有關版本內部衝突:

<dependency> 
     <groupId>struts</groupId> 
     <artifactId>struts</artifactId> 
     <version>1.2.8</version> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 
+0

我不明白你的問題,所以你可以提供以下信息:想要使用的Maven版本(2.2.x與3.0.x)。我認爲答案取決於不同的版本。也許這個問題根本無法解答,因爲問題存在於不同的版本中,如果它們兼容或不適合您的使用。 – mliebelt 2011-03-13 13:18:13

+0

我正在使用maven 3.0,我的項目是使用ANT,我正在做maven的重構,我需要一些其他內部項目的libs,它們有更多的依賴庫。 – ricardo 2011-03-14 14:23:31

+0

當我想象「依賴層次結構」時,我注意到上面這個例子的一些不同版本的相同庫,Maven將舊版本設置爲「與[版本]衝突時省略」。因此,我想知道做什麼是正確的。 – ricardo 2011-03-14 14:25:02

回答

5

你需要在你的[家長]配置dependencyManagement節POM。這將強制作爲傳遞依賴關係的工件作爲指定版本。