Maven入门

Pom文件

Super Pom

pom文件是可以继承的,达到高效复用

占位符

  • 通过version占位符,可以统一管理相同框架下的jar包
  • 可以在子pom里修改父pom的配置

Profile扩展

用途:针对不同的环境提供不同的配置文件

Maven Scope

  • compile:用于所有阶段,会随着项目一起发布
  • runtime:只在运行时使用,
  • provided:JDK,容器提供的依赖
  • test:只在测试时使用,用于编译和运行测试代码,不会随项目发布
  • import:仅仅用来导入依赖

Jar包版本的使用与维护

  • 版本定义
    <主版本>.<次版本>.<增量版本>-<里程碑版本>
    • <主版本>:重大架构变更
    • <次版本>:较大范围的功能增加和变化
    • <增量版本>:日常bug修复或者小需求发布
  • 快照版本
    • 为了不频繁的修改version
    • maven在编译时,会按照一定策略拉去最新的快照版本
    • 不稳定,不能用于线上

依赖冲突

原因:依赖的传递性

解决方案

  • 最短路径优先
  • 第一声明优先

版本冲突

  • 尽量使用更高版本
  • 尽量使用已知最稳定版本
  • 不要exclude,除非理由充分

Duplicated classes

  • exclude 某个jar包

生命周期和插件

生命周期概述

maven的生命周期是对所有构建过程的抽象和统一

  • clean 主要完成清理工作
    • pre-clean
    • clean
    • post-clean
  • default 包括核心构建工作
    • compile
    • test
    • package
    • install
    • deploy
  • site 建立项目站点
    • pre-site
    • site
    • post-site
    • site-deploy

插件机制

  • Maven是一个 微内核 的框架,主要通过插件来完成核心功能
  • 每个插件可以支持多个功能,通过goal来表达

插件工具

  • dependency:依赖分析
  • versions:版本管理
  • help:maven基础功能
  • archetype:maven项目架构
  • idea:生成idea配置
  • eclipse:生成eclipse配置
  • tomcat:tomcat Web容器
  • jetly:jetly Wed容器