Maven全解析:Maven 进阶
pom.xml 文件:
- 定义了项目的基本信息,用于描述项目如何构建,声明项目依赖
坐标:
- 构建的唯一标识
- 含义:
- groupId:组织标识。一般为:公司网址的反写 + 项目名
- artifactId:项目名称。一般为:项目名 - 模块
- version:版本号 形式为:0.0.1-SNAPSHOT
- 第一个 0 标识大版本号,第二 0 标识分支版本号,第三个 0 表示小版本号
- SNAPSHOT:快照版本
- ALPHA:内测版本
- BETA:公测版本
- RELEASE:稳定版本
- GA:正式发布版本
- 第一个 0 标识大版本号,第二 0 标识分支版本号,第三个 0 表示小版本号
- packaging:打包的方式
- pom:只做依赖管理
- jar:Maven Java 项目,普通 Java 项目
- maven-plugin
- ejb
- war:JavaWeb 项目
- clissfier:用来帮助定义构建输出的一些负数构建
依赖:
- dependency:表示一个具体的依赖,可以是本地项目,也可以是第三方依赖
-
属性说明:
- 三维坐标:引用依赖包的三维坐标,用来定义依赖包
- scope:控制该依赖包在什么情况下会被加载到 classpath 中
-
依赖范围:<scope></scope>
- 主代码:main 下面的都是主代码在编译的时候的依赖
- 测试代码:test 下是测试代码编译的时候的依赖
- 运行时:main 代码在运行的时候对包的依赖
-
scope:默认为 compile
- compile:编译依赖范围
- provided:对于编译与测试
- runtime:运行时
- test:测试依赖范围
- system
- import
-
依赖传递和可选依赖
- 传递依赖是会受到依赖范围的影响
- 阻断依赖:
- 可选依赖:
- 在依赖中明确的排除掉某一依赖,可以使用 exclusion 属性,排除掉引用的依赖
仓库:
-
类型:
- 本地
- 中央
- 远程:
- 阿里云
- 腾讯云
- 百度云
- maven 的中央仓库
-
本地仓库:
- 在第一次执行 maven 命令的时候才会被创建
- Maven 所需要的任何构建都是直接从本地仓库获取的。如果本地仓库没有,首先会从远程库下载构建至本地仓库,再使用本地仓库
-
中央仓库:
- 有 Maven 社区提供的仓库
- 简单的 Java 项目依赖的构建都可以在这里下载到
- 关键概念:
- 由 Maven 社区管理
- 不需要配置
- 需要通过网络才能访问
-
依赖搜索顺序:
声明周期:
-
三套互相独立的声明周期:
- Clean:清理项目
- Default:构建项目
- sit:建立项目站点
生命周期
clean
default
site
阶段(phase),执行顺序由上至下
pre-clean
validate
pre-site
clean
initialize
site
post-clean
generate-sources
post-site
process-sources
site-deploy
generate-resources
process-resources
compile
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile
process-test-classes
test
prepare-package
package
pre-integration-test
integration-test
post-integration-test
verify
install
deploy
Maven 继承和聚合:
-
意义:
- 避免重复,让项目更加安全
-
可继承的 POM 元素:
- groupId:项目组ID,项目坐标的核心元素
- version:项目版本,项目坐标的核心元素
- description:项目的描述信息
- organization:项目的组织信息
- inceptionYear:项目的创始年份
- url:项目的 url 地址
- develoers:项目的开发者信息
- contributors:项目的贡献者信息
- distributionManagement:项目的部署信息
- issueManagement:缺陷跟踪系统信息
- ciManagement:项目的持续集成信息
- scm:项目的版本控制信息
- mailingListerv:项目的邮件列表信息
- properties:自定义的 Maven 属性
- dependency:项目的依赖配置
- dependency Management:项目依赖管理配置
- repositories:项目的仓库配置
- build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
- reporting:包括项目的报告输出目录配置、插件配置、插件管理配置
Maven私服架构:
-
私服介绍:
- 正式开发,不同的项目组开发不同的工程。maven-dao 工程开发完毕,发布到私服 maven-service 从私服下载 dao
- 公司在自己的局域网内部搭建自己的远程仓库服务器,成为私服。
- 私服服务器既是公司内部的 maven 远程仓库,每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 包并发送到私服服务器,其他项目组从私服服务器下载所有依赖的构建(jar)
-
私服充当代理服务器,当私服上没有 jar 包会从互联中央仓库自动下载
-
Nexus介绍:
- Nexus 是 Maven 仓库管理器,通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构建搜索功能等。