Maven 高级
依赖传递
依赖传递是指当一个项目 A 依赖于项目 B,而项目 B 又依赖于项目 C 时,项目 A 可以间接地使用项目 C 的类库,而不需要直接声明对项目 C 的依赖。这简化了依赖管理,但也可能引入不必要的依赖,导致版本冲突。
控制依赖传递
排除依赖:可以使用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.3</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
Scope 管理:通过设置依赖的 scope(如 compile, test, provided 等),可以控制依赖的作用范围。
聚合
聚合是指将多个 Maven 项目组合在一起,形成一个多模块的 Maven 项目。通过聚合,可以一次性构建和管理多个模块。
如何定义聚合
在父项目的 pom.xml 文件中使用
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
子模块的目录结构通常与父项目在同一级或子目录中。
继承
继承是指子项目可以继承父项目的配置,如依赖管理、构建插件配置等。这有助于减少重复配置,保持项目一致性。
如何定义继承
在子项目的 pom.xml 文件中使用
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
<relativePath>../parent-project/pom.xml</relativePath>
</parent>
属性
属性是 Maven 中用于定义可重用值的机制,通常用于定义版本号、路径、系统属性等。定义的属性可以在 pom.xml 文件的其他部分引用。
常用的属性类型
内置属性:如 ${project.basedir} 表示项目根目录。
用户定义属性:在
环境变量属性:可以直接引用系统的环境变量。
定义和使用属性
在 pom.xml 文件中定义和使用属性的例子:
<properties>
<spring.version>5.3.3</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?