使用Maven 2管理依赖项

时间:2010-09-02 18:47:54

标签: maven-2 dependencies

我有一个Web应用程序,其中有超过100个由Maven拖动的jar文件,而且事情有点失控。

例如,我最终得到了3个版本的Spring核心类,导致应用程序部署有时失败(似乎从WEB-INF / lib加载的jar的顺序与Weblogic并不总是一样):

spring-2.5.6.SEC01.jar
spring-2.5.6.A.jar
spring-core-2.0.8.jar

所以我正在努力清理乱七八糟的东西。我开始主要使用排除,但我想知道我不应该依赖于我自己的pom文件中的dependencyManagement元素。最佳做法是什么?

此外,通常不指定传递依赖的版本。例如,在spring-security-core 2.0.5.RELEASE pom文件中有:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
</dependency>

如果我没有指定任何内容,将加载哪个版本的spring-core?最新的?它会随着时间而改变吗?

感谢。

1 个答案:

答案 0 :(得分:3)

  

所以我正在努力清理乱七八糟的东西。我开始主要使用排除,但我想知道我不应该依赖于我自己的pom文件中的dependencyManagement元素。最佳做法是什么?

  • 您绝对应该使用dependencyManagement元素来控制传递依赖项中的工件版本,这是可行的方法。
  • 您还可以创建POM到group dependencies
  • excludesgroupId不匹配时使用artifactId(例如spring-core和单片spring jar)。
  

此外,通常不指定传递依赖的版本(...)。如果我没有指定任何内容,将加载哪个版本的spring-core?最新的?它会随着时间而改变吗?

指定了 ,它们在spring-security-parent POM的dependencyManagement部分中声明。版本是2.0.8。 发布的工件不会随时间而改变。

如果你想控制这个传递依赖的版本,请在我写的时候使用dependencyManagement元素。

不要忘记mvn dependency:tree(或任何图形前端),这是你最好的武器。