介绍:
Maven是Apache公司发行的,一个Java项目管理和构建工具
作用:
1.方便的依赖管理
2.统一的项目结构
3.标准的项目构建流程
模型:
Maven通过项目对象模型(POM)和依赖管理模型(Dependency)管理依赖(jar包),如果新添加的依赖,那么Maven会先在本地仓库中(自己计算机上的一个目录)查找是否有该依赖,如果没有,那么会在远程仓库(私服)(一般由公司团队搭建的私有仓库)中查找,如果也没有,那么会到中央仓库(由Maven团队维护的,全球唯一的,基本包含全球发布的所有依赖。仓库地址:Central Repository: (maven.org))中查找,查找到又会逐个往回传输下载。
依赖管理:
依赖配置:
如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。
如果不知道依赖的坐标信息,可以到Maven Repository: Search/Browse/Explore (mvnrepository.com)中搜索。
依赖传递:
排除依赖代码:
<dependency>
<groupId>com.han</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖-->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
排除依赖文件maven-projectB的其他依赖
依赖范围:
生命周期:
常见的生命周期阶段:
Maven高级:
分模块设计:
实践:
步骤:
继承与聚合:
继承:
比如上图中三个子工程中都有lombok依赖配置,就可以创建一个父工程,在父工程中定义一次即可。
继承关系:
继承关系实现:
指定父工程的pom.xml文件路径:
<relativePath>../tlias-parent/pom.xml</relativePath>
../为往上跳一级。
如果不指定relativePath,将从本地仓库或远程仓库查找该工程。
注意事项:
版本锁定:
但是在父工程中定义很多依赖的版本号的话也不利于管理,这样就可以使用Maven的自定义属性/引用属性
自定义属性/引用属性:
★<dependencyManagement>和<dependencies>的区别:
<dependencies>是直接依赖,在父工程中配置了依赖,子工程会继承下来
<dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)
聚合:
在打包tlias-web-management文件时,会打包失败,因为在本地仓库中找不到依赖的另外两个文件tlias-pojo和tlias-utils的jar包。要完成打包操作,需要这两个包安装到本地仓库,即MAven生命周期中的install操作,还要父工程tlias-parent也需要install,才能打包,很麻烦,这时候就需要聚合。
一般情况下,父工程就满足集合工程的要求。
方法:
总结:
私服:
介绍:
资源上传及下载:
version中不指定默认是RELEASE。