首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定一组<parent>框架依赖项的<parent>依赖项

如何确定一组<parent>框架依赖项的<parent>依赖项
EN

Stack Overflow用户
提问于 2017-09-21 01:24:00
回答 3查看 1.4K关注 0票数 2

我想知道下面是否有可能,以及如何做到。

我当时正在学习一个spring引导教程,上面提到过,我们可以有一个父依赖关系。

代码语言:javascript
运行
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

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

代码语言:javascript
运行
复制
<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。

  • 春季语境
  • spring
  • 弹簧试验

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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提供

因此,对于以下家长:

代码语言:javascript
运行
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

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

代码语言:javascript
运行
复制
<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
  • 弹簧试验

但是,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 这里

考虑到你的问题你提到你可以像这样声明一个依赖关系..。

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

..。这是因为spring-boot-dependencies POM声明如下:

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
<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>
票数 2
EN

Stack Overflow用户

发布于 2018-01-27 20:39:08

既然你要通过教程,我假设你是新来的春天。

春季的人们非常好,可以建立一个生成项目的站点。它很容易使用。我建议你边学边试。下载一些您想要的依赖项应用程序,并查看它们是如何设置的。

一旦你感到舒服并想深入潜水,再读一遍@glytching的答案,它是非常好的。

票数 1
EN

Stack Overflow用户

发布于 2018-01-28 19:28:02

如果您不使用Spring并且只需要Spring依赖项,则使用spring-framework-bom

代码语言:javascript
运行
复制
<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>

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

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
</dependency>

此外,如果使用Spring但不希望使用spring-boot-starter-parent作为父工件,还有另一个选项:

代码语言:javascript
运行
复制
<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。

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

https://stackoverflow.com/questions/46333956

复制
相关文章

相似问题

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