Maven 管理依赖的详细步骤
1. 基本依赖管理:
a. 在项目根目录创建 pom.xml 文件(如果不存在)
b. 在 pom.xml 的 标签内添加依赖:
<project><!-- 其他配置 --><dependencies><dependency><groupId>org.example</groupId><artifactId>example-library</artifactId><version>1.0.0</version></dependency></dependencies>
</project>
c. 运行 mvn install
下载依赖
2. 依赖范围(Scope):
可以使用 标签指定依赖的范围:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>
常用的 scope 值:
- compile(默认):在所有阶段都可用
- provided:编译时需要,但在运行时由 JDK 或容器提供
- runtime:运行和测试时需要,但编译时不需要
- test:仅在测试时需要
- system:类似 provided,但需要显式指定 JAR 文件的位置
3. 排除传递依赖:
使用 标签排除不需要的传递依赖:
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.9</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-jcl</artifactId></exclusion></exclusions>
</dependency>
4. 依赖管理:
在父 POM 中使用 统一管理依赖版本:
<dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>5.3.9</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
5. 属性定义版本:
使用属性定义版本号,方便统一管理:
<properties><spring.version>5.3.9</spring.version>
</properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency>
</dependencies>
6. 查看依赖树:
使用命令 mvn dependency:tree
查看项目的依赖树结构。
7. 解决依赖冲突:
当遇到依赖冲突时,可以使用 或显式声明来解决:
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1-jre</version>
</dependency>
8. 使用 Maven Profile:
通过 Profile 为不同环境配置不同的依赖:
<profiles><profile><id>dev</id><dependencies><!-- 开发环境依赖 --></dependencies></profile><profile><id>prod</id><dependencies><!-- 生产环境依赖 --></dependencies></profile>
</profiles>
9. 使用 Maven 仓库:
配置额外的 Maven 仓库:
<repositories><repository><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url></repository>
</repositories>
10. 依赖可选性:
使用 <optional> 标签标记可选依赖:```xml
<dependency><groupId>org.example</groupId><artifactId>optional-lib</artifactId><version>1.0</version><optional>true</optional>
</dependency>
```
11. 依赖分析:
使用 `mvn dependency:analyze` 命令分析项目中未使用和未声明的依赖。