【问题标题】:Overrriding spring version in Spring boot/ spring cloud在 Spring Boot/Spring Cloud 中覆盖 Spring 版本
【发布时间】:2015-09-20 03:00:11
【问题描述】:

我注意到使用 Spring Boot 1.2.4 的 spring cloud Angel.SR3,加载的 spring 版本是 4.1.6.RELEASE。

我阅读的 yaml 处理器中存在内存泄漏问题,该问题已在 spring 4.1.7.RELEASE 中修复。

在此 https://jira.spring.io/jira/secure/ReleaseNote.jspa?projectId=10000&version=14936 中特别提到([SPR-13173] - YAML 处理器使 StreamDecoder 保持打开状态)

我跟踪了一下,发现启动器使用 ${spring.version} 来指定要使用的 spring 版本。

我尝试通过将 4.1.7.RELEASE 添加到我的属性来进行覆盖,但它仍会加载 4.1.6 版本

无论如何我可以做到这一点?我知道这些都是经过策划的,但这种特殊的内存泄漏给我们带来了很多问题。

根据要求,我附上了 pom 的前部。所有基本依赖项都通过 spring cloud 父级拉入。我注意到他们使用 ${spring.version} 来定义 spring 的正确值。我试图通过属性设置覆盖它。在我的 pom 的其余部分中,我从来没有明确地引入任何 spring 框架库。父 pom 会这样做。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.libertas.vipaas</groupId>
    <artifactId>vipaas-starter</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <name>Vipaas Starter</name>
    <description>Vipaas Starter</description>

    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>Angel.SR3</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <java.version>1.8</java.version>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <spring.version>4.1.7.RELEASE</spring.version>
         ..... other stuff ...

    </properties>
    ... other stuff as not relevant ....

【问题讨论】:

  • 看起来您使用的是 Maven,对吗?请分享你的 pom,因为答案取决于你如何使用 Spring Cloud 和 Spring Boot 的依赖管理。
  • 可以看到Spring boot 1.2.5使用的是spring 4.1.7.RELEASE。我想这更多的是一个1.2.5何时会成为spring cloud的基础的问题。目前最新版本在 spring boot 1.2.4
  • 仍然是一个有效的问题。我想将 Spring Boot 升级到 1.3.1.RELEASE,但从 Spring Cloud (Brixton.M3) 获得了一些混合的 springframework 依赖项 (4.2.3 + 4.2.4)。我希望最迟拥有它们。

标签: spring-boot spring-cloud


【解决方案1】:

使用 dependencyManagement 它应该可以工作:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.1.7.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

您可以通过以下方式进行检查:

mvn help:effective-pom | grep -A1 "artifactId>spring-context"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 2022-01-19
    • 2021-12-16
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多