gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:47:10 27 4
gpt4 key购买 nike

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

我正在学习 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>

这会将 spring-boot-starter 和 spring-boot-starter-web 的依赖版本 1.5.6.RELEASE 添加到项目依赖项中。

就这样我想找到什么是<parent>我需要添加到新项目中的以下依赖项的代码片段。<groupId>org.springframework</groupId> 中的依赖项.我需要使用 4.3.9.RELEASE 版本。

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

谢谢!

最佳答案

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

  • spring-test 将由 spring-boot-starter-test
  • 提供
  • spring-context 将由 spring-boot-starter-data-jpa
  • 提供
  • spring-jdbc 将由 spring-boot-starter-jdbc
  • 提供

因此,对于以下父级:

<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 上下文
  • Spring jdbc
  • Spring 测试

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

继续阅读以详细了解如何为给定的精选库识别正确的启动器......

spring-boot-starter-parent 是一个特殊的启动器,它提供有用的 Maven 默认值和一个依赖管理部分,它定义了您可能想在 POM 中使用的大量依赖项。这些依赖项通常被称为“策划”或“祝福”,并且由于它们是在 Maven 层次结构中某处的依赖项管理部分中定义的,因此您可以在 POM 中引用它们而无需版本标记(即它们从依赖管理部分条目。)

您可以看到 spring-boot-starter-parent POM here往里看你可以看到它引用了 spring-boot-dependencies POM here .

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

<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>

因此,parent 和 starters 只是一种包装依赖声明并使应用程序开发人员更容易使用它们的方法。 Spring docs总结如下:

Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of dependency descriptors. For example, if you want to get started using Spring and JPA for database access, include the spring-boot-starter-data-jpa dependency in your project.

但是,这意味着所有依赖项都必须通过父项或启动项声明,因此,如果您使用 Spring Boot,那么您可以在不使用的情况下声明依赖项 parent 或初学者以及您在问题中描述的内容(声明对 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>

关于java - 如何确定一组 springframework 依赖项的 <parent> 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333956/

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