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

如何确定一组springframework依赖项的依赖项

淳于思淼
2023-03-14

我想知道下面是否可行以及如何实现。

我正在学习Spring boot的教程,其中提到我们可以有一个父依赖项。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

然后定义没有版本号的依赖项。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

这将在项目依赖项中添加依赖项版本1.5.6。释放sping-boot-starter和sping-boot-starter-web。

就像那样,我想找到什么是<代码>

  • Spring-上下文
  • spring-jdbc
  • Spring测试

谢谢!

共有3个答案

周学义
2023-03-14

如果不使用spring Boot并且只需要spring framework依赖项,请使用spring framework bom:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.3.9.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在这种情况下,依赖关系将没有指定版本:

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

此外,如果您使用Spring Boot,但不想将Spring Boot starter父对象用作父工件,则还有另一个选项:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.9.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

有关更多详细信息,请参阅Spring Boot文档。文档中的一个重要说明:

Spring Boot的每个版本都与Spring框架的基本版本相关联,因此我们强烈建议您不要自行指定其版本。

这意味着您应该使用为Spring Boot定义的Spring框架版本。

松安民
2023-03-14

既然您正在阅读教程,我想您是spring新手。

spring的工作人员很好地建立了一个生成项目的网站。它很容易使用。我建议在学习时尝试一下。下载一些具有所需依赖项的应用程序,并查看它们是如何设置的。

一旦你感到舒服并想潜得更深,再读一遍@glytching的答案,这很好。

龙俊良
2023-03-14

如果您使用的是Spring Boot,那么以下启动器将为您提供这三个依赖项:

  • Spring测试将由Spring启动起动机测试提供

因此,使用以下父级:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

...如果您添加这些依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

...然后你会得到

  • spring上下文
  • Springjdbc
  • Spring试验

但是,Spring Boot 1.5.6. RELEASE依赖于v4.3.10。释放那些核心Spring库,而不是4.3.9。按照您的问题中的建议释放。通常,您会接受Spring对依赖项的管理,因此如果Sping提供了4.3.10。释放,那么(a)您应该使用该版本,或者(b)将Spring Boot降级为提供4.3.9的版本。释放。

请继续阅读,了解如何为给定的策展图书馆确定正确的启动程序的详细信息。。。

spring boot starter父级是一个特殊的启动程序,它提供了有用的Maven默认值和一个依赖项管理部分,该部分定义了许多您可能希望在POM中使用的依赖项。这些依赖关系通常被称为“精心策划的”或“受祝福的”,因为它们是在maven层次结构中某个地方的依赖关系管理部分中定义的,所以您可以在POM中引用它们,而无需版本标记(即,它们继承自依赖关系管理部分条目的版本)

您可以在此处看到spring boot starter父级POM,从中可以看到它在此处引用了spring boot依赖项POM。

看着你的问题,你提到你可以像这样声明一个依赖项...

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

... 这是因为spring boot dependencies POM声明了以下内容:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>${revision}</version>
</dependency>

因此,父级和启动器只是一种包装依赖关系声明并使其更易于应用程序开发人员使用的方法。Spring文档总结如下:

启动器是一组方便的依赖关系描述符,可以包含在应用程序中。您可以一站式获得所需的所有Spring和相关技术,而无需搜索示例代码和复制粘贴负载的依赖描述符。例如,如果您想开始使用Spring和JPA进行数据库访问,请在项目中包含Spring boot starter数据JPA依赖项。

然而,这并不意味着必须通过父级或启动器声明所有依赖项,因此,如果您不使用Spring Boot,那么您可以在不使用父级或启动器的情况下声明依赖项,并且您在问题中描述的内容(声明对3个核心Spring库的依赖项)可以通过明确依赖这3个库来安全地涵盖。例如,只需将以下内容添加到您的pom中即可。xml

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.9.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.3.9.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.3.9.RELEASE</version>
    <scope>test</scope>
</dependency>
 类似资料:
  • 问题内容: 假设我想在项目中添加guice-assistedinject作为依赖项。它将guice工件指定为依赖项本身。如何告诉它使用guice的no_aop版本? 我知道我可以执行以下操作,但是我可以一步完成而不排除guice模块吗? 问题答案: 没有更简单的解决方案。您可以使用简短的依赖性表示法(例如)来缩短代码。

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存

  • 我正在开发一个Java项目,使用maven作为依赖项管理器/构建工具。我当前在将依赖项的依赖项解析到正确版本时遇到问题。 有问题的依赖项称为JasperReports-Functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的。 如何强制jar依赖项使用子依赖项的某个版本?

  • npm是否有安装依赖作为对等依赖的选项,如yarn选项,而不是手动添加它例如: 感谢@Broncha,更新问题的更多说明 问题是如何向项目添加对等依赖。那就是 将依赖项添加到package.json中的“dependencies”中, 如何安装将其添加到package.json?中的“对等依赖”的依赖项

  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个

  • 我使用的是Android studio版本 在项目级分级中: 模块级别等级: 当我导入它时,它发生错误 导入此时 xml错误 错误图片 在xml中添加此标记时发生错误 为此给出解决方案!!!