首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven --为什么我不能覆盖dependencyManagement导入的pom版本?

Maven --为什么我不能覆盖dependencyManagement导入的pom版本?
EN

Stack Overflow用户
提问于 2015-12-01 09:29:17
回答 1查看 16K关注 0票数 13

我正在寻找关于这个例子的解释:我有一个项目,其中有一个dependencyManagement /依赖项部分,其中包含:

myproject/pom.xml:

代码语言:javascript
复制
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Brixton.M3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>

spring定义:

代码语言:javascript
复制
<properties>
        <main.basedir>${basedir}/../..</main.basedir>
        <spring-cloud-netflix.version>1.1.0.BUILD-SNAPSHOT</spring-cloud-netflix.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>${spring-cloud-netflix.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

这样,我的项目将获得spring eureka版本1.1.0.BUILD-快照。

我原以为如果我在myproject/put.xml中添加一个带有另一个版本的属性部分,我会覆盖默认版本,但是它被忽略了,为什么呢?

myproject/pom.xml

代码语言:javascript
复制
...
<properties>
        <spring-cloud-netflix.version>1.0.0</spring-cloud-netflix.version>
</properties>
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 12:34:09

在构建org.springframework.cloud:spring-cloud-starter-eureka工件时,属性spring云-netflix.version已经被解析,所以在声明依赖项时不能仅仅覆盖它。

要正确指定某个依赖项版本,必须在pom的依赖关系管理部分中添加该依赖项的版本:

代码语言:javascript
复制
...
<properties>
        <spring-cloud-netflix.version>1.0.0</spring-cloud-netflix.version>
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Brixton.M3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>${spring-cloud-netflix.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>

作为多模块构建的最佳实践,您通常有一个包含依赖关系管理设置的共享主pom。所有依赖项的所有版本信息。

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

https://stackoverflow.com/questions/34016904

复制
相关文章

相似问题

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