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>
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号