为什么 spring-boot-dependency 的属性在子 POM 中不可用?

问题描述 投票:0回答:2

我正在遵循 Spring 文档 在没有父 POM 的情况下使用 Spring Boot 。在我的父 POM 中,我在

spring-boot-dependencies
部分定义了对
dependenciesManagement
的导入依赖项。然后,在我的子 POM 中,我定义了对
spring-boot-starter-jersey
的依赖,但不指定任何版本。当我查看 dependency:tree 时,我发现所有球衣依赖项都使用
spring-boot-dependencies
中指定的版本。一切都好。

现在,在我的子 POM 中,我需要添加另一个球衣依赖项。在

spring-boot-dependencies
POM 中,我看到定义了属性
jersey.version
。但是,当我在子 POM 中使用
${jersey.version}
时,该属性未定义。

为什么

${jersey.version}
在子 POM 中不可用?

父 POM 片段:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

子 POM 片段:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-sse</artifactId>
        <version>${jersey.version}</version>  <!-- error here -->
    </dependency>
</dependencies>

来自

spring-boot-dependencies-1.5.0.RELEASE.pom

<properties>
    <jersey.version>2.25.1</jersey.version>
</properties>
maven spring-boot jersey dependencies
2个回答
0
投票

属性仅从父 POM 继承。 maven 文档中对此进行了说明(不幸的是我找不到参考资料了)。


0
投票

这是 Maven 的一个相对老的问题。 问题是,当通过

dependencyManagement
块导入依赖项配置时,您不会从那里导入/继承属性仅导入依赖项的配置

属性只能从父 POM 继承,不能从

depedndencyManagement
导入继承。

© www.soinside.com 2019 - 2024. All rights reserved.