当前位置: 首页 > 知识库问答 >
问题:

理解spring 4(spring上下文)maven依赖关系

姜献
2023-03-14

我刚开始学习spring,我想使用4.0.4。发布版本——它实际上是maven repository提供的最新版本,所以我的问题是:如果我像这样添加依赖项:

        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.4.RELEASE</version>

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

    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.0.4.RELEASE</version>

-它只会将spring core jar文件添加到我的项目中,有人能解释一下为什么会这样吗?因为我正在从教程中学习,在教程中,这个家伙添加了这两个依赖项-

共有2个答案

呼延子安
2023-03-14

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

它不仅添加了sping-coreJAR文件,而且还添加了这里定义的所有依赖项。(请参阅此工件依赖于...部分。

Spring团队在一致的模块中划分了他们的框架,这样它就可以被不需要所有Spring包的特定项目正确使用。有些库并不依赖于所有的上下文jar,只依赖于核心。

目前稳定的版本是4.0.5。

因为我正在从教程中学习,在教程中,这个家伙添加了这两个依赖项-

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

如果已经声明了一个Spring上下文,则不需要声明sping-core依赖项,因为上下文已经依赖于核心。

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

公冶浩慨
2023-03-14

您需要了解的是,Maven处理可传递依赖项。

在您的情况下,sping-text依赖于sping-core,因此当您在您的pom.xml中声明sping-text时,Maven将自动解析sping-core传递依赖项(这样您就不需要声明依赖项的依赖项等等)。

sping-core没有它自己的Spring依赖项。这就是为什么当您在它自己上使用它时,没有其他Spring依赖项添加到类路径中

使用Maven依赖插件,您可以轻松地检查项目的依赖关系树

此外,您还可以在Maven central页面中看到每个模块的依赖关系(如果存在:)。以下是相关页面spring上下文

最后一点,你下面教程的作者不需要添加spring core,这可能只是一个疏忽。声明spring核心是一种冗余,只要依赖项的版本是同步的,就不会引起问题。

 类似资料:
  • 问题内容: 我正在运行一个依赖groovy 1.7-beta-1的项目。gmaven插件使用groovy 1.6版作为依赖项。在pom中,我在依赖性管理部分中将grooyv-all版本指定为: 但是,当我在调试模式下运行maven时,我看到groovy 1.6被用于对gmaven插件的依赖。我以为我的依赖项管理部分会重写此设置,因此它们都使用1.7-beta-1,但是由于常规版本不同,我遇到了错误

  • 问题内容: 假设我有四个项目: 项目A(依赖于B和D) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下,如果我运行项目A,则Maven将正确地解决对D的依赖关系。如果我理解正确,则Maven始终以最短的路径获取依赖关系。由于D是A的直接依赖项,因此将使用B内指定的D而不是D。 但是现在假设这种结构: 项目A(依赖于B和C) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下

  • 我已经在pom中配置了本地maven存储库。xml。当我构建项目时,它会显示依赖项下载错误(请参阅下面的日志)。Maven正在尝试从我的本地Maven存储库下载所有依赖项。 日志 这是我的pom。xml文件 本地存储库是http://XXX。XXX。XX。XXX:8081/artifactory/libs本地发布 xml。背景

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间

  • maven允许您在pom文件中定义: (A) - (B) /- 如果我把错误/未知的工件放在A类-maven肯定会失败。 如果我将错误/未知工件放在类别B上-maven只会在它影响类别A时失败(例如,A在上定义dep,B在

  • 谁能告诉我Maven中的依赖项Hamcrest有什么问题吗?这是一个遗憾,但我不能在这里附上截图。 当我试图更新Maven索引时,什么也没有发生。