Maven 2 使用Maven 2管理依赖项

Maven 2 使用Maven 2管理依赖项,maven-2,dependencies,Maven 2,Dependencies,我有一个web应用程序,有100多个jar文件被Maven拖拽,事情有点失控 例如,我最终得到了3个版本的Spring核心类,这有时会导致应用程序部署失败(从WEB-INF/lib加载JAR的顺序似乎与Weblogic并不总是相同): 所以我正在努力收拾残局。我开始主要使用排除,但我想知道我是否不应该在自己的pom文件中依赖dependencyManagement元素。这方面的最佳实践是什么 此外,通常不指定可传递依赖项的版本。例如,在spring security core 2.0.5.REL

我有一个web应用程序,有100多个jar文件被Maven拖拽,事情有点失控

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

所以我正在努力收拾残局。我开始主要使用排除,但我想知道我是否不应该在自己的pom文件中依赖dependencyManagement元素。这方面的最佳实践是什么

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

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

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

谢谢

所以我正在努力收拾残局。我开始主要使用排除,但我想知道我是否不应该在自己的pom文件中依赖dependencyManagement元素。这方面的最佳实践是什么

  • 您肯定应该使用元素来控制可传递依赖项中工件的版本,这就是方法
  • 您还可以创建POM来创建
  • groupId
    artifactId
    不匹配时(例如
    spring-core
    和单片
    spring
    jar),使用
    excludes
此外,通常不指定可传递依赖项的版本(…)。如果我没有指定任何内容,将加载哪个版本的spring core?有最新的吗?它会随着时间而改变吗

它们已指定,它们在POM的
dependencyManagement
部分中声明。版本是2.0.8。对于这个发布的工件,它不会随时间而改变

如果您想控制这个可传递依赖项的版本,请使用我编写的
dependencyManagement
元素


别忘了
mvn依赖:tree
(或任何图形化前端),ti是你最好的武器。

非常完整和有用的答案。我已经在eclipse中使用了一个可视化依赖:树,它帮助我发现了问题,但我更想知道如何修复它。谢谢。
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
</dependency>