Maven 依赖管理

依赖传递

依赖树查看

# 查看依赖树 $ mvn dependency:tree # 查看特定依赖的传递路径 $ mvn dependency:tree -Dincludes=org.springframework:spring-core # 分析依赖冲突 $ mvn dependency:analyze

依赖冲突解决

<!-- 使用 dependencyManagement 统一管理版本 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.21</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 排除冲突的传递依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

BOM(Bill of Materials)

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

依赖分析命令

# 分析未使用的依赖 $ mvn dependency:analyze # 查找重复的依赖 $ mvn dependency:analyze-duplicate # 解析依赖 $ mvn dependency:resolve # 复制依赖到目录 $ mvn dependency:copy-dependencies -DoutputDirectory=lib

最佳实践