我正在遵循 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>
属性仅从父 POM 继承。 maven 文档中对此进行了说明(不幸的是我找不到参考资料了)。
这是 Maven 的一个相对老的问题。 问题是,当通过
dependencyManagement
块导入依赖项配置时,您不会从那里导入/继承属性。 仅导入依赖项的配置。
属性只能从父 POM 继承,不能从
depedndencyManagement
导入继承。