依赖传递
依赖传递是指当一个项目 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>