我有一个Maven多模块项目,它在主pom.xml中将一些旧版本的spring-boot-dependencies设置为parent。所有子模块都从此主pom.xml继承spring boot依赖项。
这很好但是在一个新的子模块(也是多模块)中我想使用最新的spring引导版本而不改变整个项目中正在使用的那个(连同所有依赖项)。
有没有办法巧妙地覆盖从父派生的弹簧引导版本(及其所有依赖项)并在子模块中使用不同的版本?
我试图在所有新模块的子模块的pom.xml文件中的<spring-boot.version>
属性中设置spring boot的显式版本,但没有运气。
答案 0 :(得分:5)
有没有办法聪明地覆盖从父派生的Spring引导版本及其所有依赖项,并在子模块中使用不同的版本?
没有。当您使用特定版本的Spring Boot作为父级(或祖父母等)时,您说的是您要使用的Spring Boot版本。
我试图在所有新模块的子模块中设置属性内的Spring boot的显式版本。 pom.xml文件,但没有运气。
如果这确实有效,那么你最终会得到Spring Boot X版本的父版本,其中包含该版本的Maven插件管理以及Spring Boot版本Y的依赖项。这种版本的混合可能导致奇怪的意外行为非常难以诊断。
如果您希望能够混合和匹配这样的版本,则应避免使用Spring Boot中的父级,而应该导入spring-boot-dependencies
:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这使您可以完全控制版本,但代价是必须自己定义所需的任何插件管理。同样值得注意的是,您无法覆盖导入的pom中的属性。