Java Maven dependencyManagement中的多个定义-尤其是导入

Java Maven dependencyManagement中的多个定义-尤其是导入,java,maven,import,dependencies,dependency-management,Java,Maven,Import,Dependencies,Dependency Management,Maven如何在pom.xml的dependencyManagement部分处理依赖项的多个定义?e、 g <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</art

Maven如何在pom.xml的dependencyManagement部分处理依赖项的多个定义?e、 g

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
            <!-- Exclusion needed to prevent conflicts with SLF4j -->
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

org.springframework
spring上下文
${spring.version}
org.springframework
spring上下文
${spring.version}
公用记录
公用记录
这里我已经定义了两次spring上下文。一次排除,一次不排除。Maven在两个条目都存在的情况下运行和生成。但我不确定它是如何“读取”依赖关系的。明智的做法可能是合并这些定义。虽然我不确定这是可能的。如果失败了,我希望它打印一个错误

虽然我不清楚上面的内容,但如果有导入范围定义,它会变得更复杂

e、 g


org.springframework.boot
spring启动依赖项
${spring boot.version}
聚甲醛
进口

如果在导入依赖项pom.xml和spring引导依赖项pom.xml中都定义了依赖项,这里会发生什么?

通常,最后一个条目获胜,子pom覆盖父pom。但进口的处理方式不同——它们与其他从属管理条目不在“同一级别”。有关详细信息,请参阅


看看这个方便的实验工具。我想得到一些文档来定义我所看到的。即-对于重复依赖项,使用最后一个定义。没有合并。e、 g.在spring上下文之上使用排除。对于“导入”范围,顺序并不重要。如果它是在importing pom.xml中定义的,那么它就是所使用的版本。Maven文档中是否解释了这一点?
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>