Maven的认识与学习
1、什么是 Maven
- Maven 是 Apache 下的一款开源软件,是用 java 开发的;
- Maven 是一款项目构建工具,帮助程序员进行项目的构建;
- 项目构建工具用于帮助程序员完成一些辅助操作,如:创建目录、代码编译、代码测试、导包…
- 常见的构建方式:
- Ant,也是 Apache下的一款开源软件;
- Maven 换一种方式去管理项目
2、使用 Maven 后的变化
-
项目结构不同了
项目根路径
|- src
|- main
|- java:存放java代码,不识别配置文件
|- resources:存放配置文件,不识别java代码
|- webapp:存放前端页面相关
|- test
|- java:存放测试java代码, 不识别配置文件
|- resources: 存放测试用配置文件, 不识别java代码
-
包管理方式不同了
- maven中通过仓库(Repository)的概念对包进行统一管理.
- 中央仓库(Central Repository), 官方维护, 存放所有相关的jar包(包含各个版本)
- 本地仓库(Local Repository), maven项目都是从本地仓库加载jar包的.
- 镜像仓库(Mirror Repository), 国内有能力的组织(机构)搭建的仓库, 这个仓库就是将中央仓库中的所有内容复制了一份存起来.
- jar包的定位: (坐标)由三部分构成
- GroupId: 一般是逆向公司域名
- ArtifactId: 一般是项目(jar)名
- Version: 版本号
- maven中通过仓库(Repository)的概念对包进行统一管理.
-
项目之间的关系不同了
- 依赖:一个项目用到了另一个项目的功能;
- 继承:两个项目之间是父子关系;
- 聚合:前提是必须先有继承关系, 在继承关系的基础上又有更进一步的关系;
3、Maven 的安装和配置
解压即可使用, 需要在使用前修改conf/setting.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库 -->
<localRepository>E:/Repository</localRepository>
<mirrors>
<!-- 配置镜像仓库地址 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<!-- 配置jdk版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>
4、Maven 工程类型
- Maven 有三种工程类型:
- jar:java工程,项目最终被打包成jar包;
- war:web工程,项目最终被打包成war包;
- pom:逻辑工程, 父工程必须是pom类型的工厂. pom工程中不写java代码, 值用于进行子工程的管理.
-
pom 概念:
pom: Project Object Model, 在Maven中, 一个Project也可以被理解为一个Object. 在Maven工程中, 会有一个配置文件叫pom.xml, 该文件用来配置管理当前项目依赖的所有jar包.
-
maven坐标查询网站
https://mvnrepository.com/
https://maven.aliyun.com/mvn/search -
war 项目注意事项:
项目创建时需要指定模板,创建成功后,需要自己补全目录结构;
5、Maven 工程间的关系
-
依赖
假设两个工程A和B, A当前需要使用B的功能, 我们就说A依赖B. 依赖关系是一个比较简单的关系. 依赖关系只需要通过在pom文件中指定坐标即可实现.
-
继承
假设两个工程A和B, B工程是在A工程基础上做的扩展. 此时, B工程继承了A工程. 继承是比依赖更紧密的一种关系. 要求父工程必须是一个pom工程. 在继承关系中, 子工程明确父工程, 但是父工程不明确子工程.
-
聚合(重点)
多个Model共同组成一个Project. 对外看起来是一个工程. 必须先由继承关系. 在聚合工程中, 是一个双向的关系.