Maven和spring-boot-dependencies

时间:2016-01-23 09:31:41

标签: maven spring-boot

我有一个Maven多模块项目,它在主pom.xml中将一些旧版本的spring-boot-dependencies设置为parent。所有子模块都从此主pom.xml继承spring boot依赖项。

这很好但是在一个新的子模块(也是多模块)中我想使用最新的spring引导版本而不改变整个项目中正在使用的那个(连同所有依赖项)。

有没有办法巧妙地覆盖从父派生的弹簧引导版本(及其所有依赖项)并在子模块中使用不同的版本? 我试图在所有新模块的子模块的pom.xml文件中的<spring-boot.version>属性中设置spring boot的显式版本,但没有运气。

1 个答案:

答案 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中的属性。