Maven

Maven

坐标

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
</dependency>
  • groupId,定义当前模块隶属的实际Maven项目
  • artifactId,定义实际项目中的一个Maven模块
  • version,定义当前项目所处版本,版本号定义约定: <主版本>.<次版本>.<增量版本>-<里程碑版本>
  • packaging,定义Maven项目打包方式, 通常打包方式与所生成构件扩展名对应,有jar(默认)、war、pom、maven-plugin等.

依赖

  • 直接依赖
  • 传递依赖,依赖的依赖

版本选择原则:

  • 路径最近者优先
  • 第一声明者优先

依赖除了保护坐标信息外,还保护以下内容:

  • scope,用来控制依赖与三种classpath(编译classpath、测试classpath、运行classpath)的关系,包含compile、provided、runtime、test、system和import
  • optional,依赖是否可选
  • exclusions,排除传递性依赖

查看依赖树:mvn dependency:tree

仓库

集中存储这些构件的地方

  • 本地仓库: 默认地址为~/.m2/, 一个构件只有在本地仓库存在之后, 才能由Maven项目使用

  • 远程仓库: 远程仓库又可简单分成两类: 中央仓库和私服(代理仓库)

  • repository表示发布版本构件的仓库

  • snapshotRepository代表快照版本的仓库

生命周期与插件

  • clean:pre-clean、clean、post-clean
  • default:process-resources、compile、process-test-resources、test-compile、test、package、install、deploy
  • site:pre-site、site、post-site、site-deploy

生命周期的阶段phase与插件的目标goal相互绑定, 用以完成实际的构建任务

mvn compile:compile,冒号前是插件前缀, 后面是该插件目标

聚合继承

通过在一个打包方式为pom的Maven项目中声明任意数量的module以实现模块聚合 聚合POM放在项目目录的最顶层, 其他模块作为聚合模块的子目录 聚合POM存放公共配置,子模块POM存放定制化配置