我想知道下面是否有可能,以及如何做到。
我当时正在学习一个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</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这将向项目依赖项添加1.5.6版的依赖项1.5.6.RELEASE (spring starter和spring starter)。
就像这样,我想找到需要添加到一个新项目中的以下依赖项的<parent>
代码片段。<groupId>org.springframework</groupId>
中的依赖项。我需要使用4.3.9版本的version。
谢谢!
发布于 2018-01-26 16:48:02
如果您正在使用Spring,那么下面的启动程序将为您提供这三个依赖项:
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>
..。然后你会得到
但是,SpringBoot1.5.6 depends依赖于v4.3.10,这些核心Spring库的depends是而不是4.3.9。通常,您将接受Spring的依赖关系管理,因此如果Sping提供了4.3.10 version,那么(a)应该使用该版本,或者(b)将Spring降级为提供4.3.9.RELEASE的版本。
请阅读有关如何为给定的管理库识别正确的起始点的详细信息.
spring starter是一个特殊的启动程序,它提供了有用的Maven默认值和一个依赖关系管理部分,它定义了您可能希望在POM中使用的众多依赖项。这些依赖项通常被称为“管理”或“祝福”,因为它们是在maven层次结构的某个依赖项管理部分中定义的,所以您可以在POM中引用它们,而不需要版本标记(也就是说,它们从依赖关系管理节条目继承版本)。
您可以看到spring-boot-starter-parent
POM 这里,在内部查看可以看到它引用了spring-boot-dependencies
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>
因此,父程序和启动程序只是结束依赖声明并使应用程序开发人员更容易使用它们的一种方法。春季医生将此总结为:
Starters是一组方便的依赖描述符,您可以在应用程序中包含这些描述符。您可以为您需要的所有Spring和相关技术提供一站式服务,而无需搜索示例代码和复制粘贴大量的依赖描述符。例如,如果您想开始使用Spring和JPA进行数据库访问,请在您的项目中包括spring started jpa依赖项。
但是,这并不意味着所有依赖项都必须通过父母或启动程序声明,因此,如果您是使用Spring的而不是,那么您可以在不使用父或启动程序的情况下声明依赖项,并且您在问题中所描述的内容(声明对3个核心库的依赖)可以通过显式依赖于这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>
发布于 2018-01-27 20:39:08
既然你要通过教程,我假设你是新来的春天。
春季的人们非常好,可以建立一个生成项目的站点。它很容易使用。我建议你边学边试。下载一些您想要的依赖项应用程序,并查看它们是如何设置的。
一旦你感到舒服并想深入潜水,再读一遍@glytching的答案,它是非常好的。
发布于 2018-01-28 19:28:02
如果您不使用Spring并且只需要Spring依赖项,则使用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但不希望使用spring-boot-starter-parent
作为父工件,还有另一个选项:
<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的每个版本都与Spring框架的基本版本相关联,因此我们强烈建议您不要单独指定它的版本。
这意味着您应该使用版本来定义Spring。
https://stackoverflow.com/questions/46333956
复制相似问题