如果不指定Maven插件的版本会怎样?

时间:2019-07-17 07:54:23

标签: maven spring-boot

如果pom.xml中的spring boot 2没有指示插件的版本,将会发生什么。会自动使用最新版本吗?例如maven-surefire-plugin。

<build>
        <!--Закомментировать если сборка с Java-->
        <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
        <!---->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>

2 个答案:

答案 0 :(得分:2)

从maven 3.x documentation

  

在没有POM中给出显式版本的情况下调用插件时   或在命令行上,Maven 2.x用于选择最新版本   在最新版本可能是发行版或   快照。为了稳定起见,Maven 3.x首选最新的   发布版本,而不是最新快照版本。

     

鉴于自动生成的不可复制构建的威胁   插件版本解析,此功能计划于   就POM中的插件声明而言。 Maven的用户   3.x在检测到缺少的插件版本时会发出警告,以鼓励将插件版本添加到POM或   它的父POM之一。 Enforcer规则requirePluginVersions可以是   用于检查POM中缺少的插件版本。

答案 1 :(得分:2)

这实际上取决于您父母的身份。 Spring Boot的父级有pluginManagement个插件(包括surefire),因此它将使用该版本。这是一个固定版本,取决于您使用的Spring Boot版本。

即使您使用最新的Spring Boot版本,也无法保证它将是最新版本,因为我们试图与我们的升级策略保持一致。您可以通过mvn help:effective-pom自己找出答案。