gpt4 book ai didi

maven-2 - 使用 Maven 2 管理依赖关系

转载 作者:行者123 更新时间:2023-12-02 00:38:27 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,其中有 100 多个 jar 文件被 Maven 拖拽,事情有点失控了。

例如,我最终得到了 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?最新的可用吗?它会随着时间而改变吗?

谢谢。

最佳答案

So I'm trying to clean-up the mess. I started using mainly exclusions but I wonder if I shouldn't rely on dependencyManagement element in my own pom files instead. What is the best practice about that?

  • 你绝对应该使用 dependencyManagement元素来控制传递依赖项中工件的版本,这就是要走的路。
  • 您还可以为 group dependencies 创建 POM .
  • groupIdartifactId 不匹配时使用 excludes(例如 spring-core 和单体 spring jar).

Also, the version of transitive dependencies is often not specified (...). Which version of spring-core will be loaded if I don't specify anything? The latest available? Will it change over time?

它们指定的,它们在spring-security-parentdependencyManagement部分声明。聚甲醛。版本是2.0.8。对于这个发布的工件,它不会随着时间的推移而改变。

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

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

关于maven-2 - 使用 Maven 2 管理依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com