Maven是一个跨平台的项目管理工具。使用java语言开发(Maven 3.3+ require jdk 1.7 or above to execute)
Maven有两大功能:依赖管理 项目构建
依赖可以理解为jar包
项目构建包括以下几个环节:清理 编译 测试 报告 打包 安装 部署
清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
编译:将java源程序编译成class字节码文件
测试:自动测试,自动调p用Junit程序
报告:测试程序执行的结果
打包:动态web工程打war包,java工程打jar包
安装:Maven特定的概念---将打包得到的文件复制到“仓库”中指定位置
部署:将动态web工程生成的war包复制到servlet容器的指定目录下,使其可以运行
1.首先配置Maven环境变量(MAVEN_HOME和path)
2.测试maven是否安装成功:在系统命令行中执行mvn -v
3.配置settings.xml
3.1 本地仓库与中央仓库
3.2 默认本地仓库存放位置是在系统用户目录下的.m2/repository中(修改为自己本地的仓库地址,仓库很大,一般不要放在C盘,重新指定存放目录)
若是.m2不存在,是因为没有执行任何maven相关命令,在命令窗口中执行mvn.help:system命令,则自动生成.m2目录
3.3 jdk版本配置
默认maven的jdk编译版本不是自己安装的1.8版本。需要进行版本配置,修改settings.xml如下:
<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>
3.4 mirror 镜像配置
镜像就相当于是中央仓库的一个副本,内容和中央仓库完全一样,目前有不少国内镜像,其中阿里云算是比较稳定的,同时也能保证下载速度
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
Maven 项目的生命周期
在maven中存在三套生命周期,每一套生命周期相互独立,互不影响。在一套生命周期内,执行后面的命令则前面操作会自动执行。
1.CleanLifeCycle:清理生命周期 clean
2.DefaultLifeCycle:默认生命周期 compile test package install deploy
3.SiteLifeCycle:站点生命周期 site (生成一些HTML文档描述项目的一些信息)
创建一个jar类型的maven项目 ------选择maven-archetype-quickstart
创建一个war类型的maven项目-------选择maven-archtype-webapp
Maven 项目之间的关系
1.依赖:在工程中需要依赖各种各样的jar包,也可能需要依赖其他的maven工程打包好的包,这个时候就需要在pom.xml中使用依赖关系进行配置:
<dependency>
<groupId>com.hhh</groupId> 公司域名
<artifactId>HelloMaven</artifactId> 项目名称
<version>0.0.1-SNAPSHOT</version> 版本
</dependency>
2.继承:继承为了消除重复,将很多相同的配置提取出来。maven提供了一个父类maven项目(新建打包类型为pom的maven工程Parent)来装所有公共使用的jar,只要继承都可以使用。
<parent>
<groupId>groupA</groupId>
<artifactId>artifactA</artifactId>
<version>1.0</version>
</parent>
3.聚合(拆分:将每一层代码放到一个工程里面,降低耦合度,提高可复用性,为其他工程依赖,然后对拆分后的项目进行聚合)
如果想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,这样只需要对父工程进行mvn install命令,就依次把继承依赖的所有工程都自动执行mvn complie test package install命令。