首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解spring 4 (spring-context) maven依赖

理解spring 4 (spring-context) maven依赖
EN

Stack Overflow用户
提问于 2014-05-31 04:33:19
回答 2查看 10.2K关注 0票数 9

我刚开始学习spring,我想使用4.0.4.RELEASE版本-它实际上是maven仓库提供的最新版本,所以我的问题是:如果我像这样添加依赖:

代码语言:javascript
复制
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.4.RELEASE</version>

-it会自动将所有的“基本”模块添加到我的项目中,比如context、core、aop、beans、expression,但是如果我像这样添加依赖项:

代码语言:javascript
复制
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.0.4.RELEASE</version>

-it只会将spring-core jar文件添加到我的项目中,有人能解释一下为什么会这样吗?因为我是从教程中学习的,而且在教程中,这个家伙添加了spring-core和-> -context这两个依赖项,为什么他要这么做呢?他应该只添加spring-context依赖项,结果将是相同的,有人能解释吗?谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-31 05:05:27

您需要了解的是,Maven处理transitive dependencies

在您的例子中,spring-context依赖于spring-core,因此当您在pom.xml中声明spring-context时,Maven将自动解析spring-core传递依赖关系(这样您就不需要声明依赖关系的依赖关系等)。

spring-core没有自己的Spring依赖项。这就是为什么当您单独使用它时,不会将其他Spring依赖项添加到类路径中

您可以使用Maven dependency plugin轻松地检查项目的依赖关系树

此外,您还可以在其Maven中央页面(如果存在:)中查看每个模块的依赖关系。Here是相关页面的spring-context

最后,您正在学习的教程的作者并不需要添加spring-core,这可能只是一个疏忽。声明spring-core是一种冗余,只要依赖项的版本是同步的,就不会造成问题。

票数 10
EN

Stack Overflow用户

发布于 2014-05-31 05:02:10

它只会将spring-core jar文件添加到我的项目中,任何人能解释为什么它是这样的吗?

它不仅添加了spring-core JAR文件,实际上还添加了定义为here的所有依赖项。(请参阅“此工件依赖于...”部分。

Spring团队将他们的框架划分为一致的模块,以便它可以被不需要所有spring捆绑包的特定项目正确使用。有一些库并不依赖于所有的上下文JAR,只依赖于核心。

目前稳定的版本是4.0.5。

因为我从教程中学到了,在教程中,这个人添加了,,->,-,->,,为什么要这样做?他应该只添加spring-context依赖项,结果将是,谁能解释一下?

是的,结果几乎是一样的。

如果已经声明了spring-core,则不需要声明spring-context依赖项since the already depends on the

除非教程的作者正在为依赖关系管理构建父POM (也许他会有一个仅依赖于spring-core的模块),否则他不应该添加该依赖,因为它可能会在POM中的未来更新中发生冲突。应该删除对核心的声明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23962993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档