每日 12
Maven 是一个强大的项目管理和构建工具,广泛应用于Java项目:
- 
核心概念 
 项目对象模型 : pom.xml 是 Maven 的核心配置文件,定义项目坐标(groupId, artifactId, version)、依赖、插件、构建配置等。
 约定优于配置: 默认目录结构(如 src/main/java 存放源码,src/test/java 存放测试代码),减少配置量。
 生命周期与阶段:
 clean(清理)、default(构建与部署)、site(文档生成)三大生命周期。
 常用阶段:compile, test, package, install, deploy。执行某阶段会触发其之前的所有阶段。
- 
依赖管理 
 坐标定位: 通过 groupId、artifactId、version 唯一标识依赖。
 依赖范围 (Scope):
 compile(默认,参与所有阶段)、provided(运行时由环境提供,如 Servlet API)、test(仅测试阶段)、runtime(运行时需要,如 JDBC 驱动)。
 依赖传递与冲突:
 依赖调解原则: 路径最近优先、声明顺序优先。
 使用 exclusion 排除冲突依赖,或通过 dependencyManagement 统一版本。
- 
仓库机制 
 本地仓库: 默认位于 ~/.m2/repository,缓存下载的依赖。
 远程仓库:
 中央仓库 (repo.maven.apache.org) 是默认源。
 镜像仓库(如阿里云镜像)可加速访问。
 私有仓库(Nexus/Artifactory)用于企业内部依赖管理。
- 
多模块管理 
 父 POM: 使用pom 定义公共配置,子模块通过继承。 
 依赖管理: 父 POM 中通过统一定义版本,子模块引用时无需指定版本。 
 聚合模块: 通过聚合子模块,实现一键构建。 
- 
插件与扩展 
 内置插件: 如 maven-compiler-plugin(编译)、maven-surefire-plugin(测试)、maven-shade-plugin(打包包含依赖的 Fat Jar)。
 自定义插件: 可绑定到生命周期阶段,扩展构建流程。
 插件配置: 例如指定 JDK 版本或跳过测试:
- 
常用命令 
 mvn clean: 清理 target 目录。
 mvn compile: 编译主代码。
 mvn test: 运行单元测试。
 mvn package: 打包项目(JAR/WAR)。
 mvn install: 安装到本地仓库。
 mvn deploy: 部署到远程仓库。
 mvn dependency:tree: 分析依赖树,排查冲突。
- 
高级特性 
 Profile: 按环境(开发/生产)激活不同配置,支持条件激活(如操作系统、文件存在)。
 属性替换: 使用 ${property} 引用变量,如统一版本号管理。
 资源过滤: 结合 profile 动态替换配置文件中的变量。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号