maven是纯JAVA编写的,并且只能管理java的项目。
maven管理项目的优点:
1、maven项目节省了空间,同时在开发过程中还统一了使用jar包的版本。
通过写在pom.xml中的坐标来进行以来管理,项目中所需要的jar包都从仓库中获取。
2、一键构建。
可以用一个命令直接让项目运行起来。(tomcat:run)
3、可以跨平台。
因为maven是由java编写的,所以只要平台安装了对应的java虚拟机,就可以运行maven。
4、应用于大型项目时可以提高开发效率。
每个版本的maven都对应着不同版本的jdk。
5、maven在联网情况下可以自动下载源码包,方便查看源码。
maven有三种仓库:
本地仓库:在本地电脑上。
中央仓库:在互联网服务器上,由maven团队维护。
远程仓库:个人建的服务器,私服。
maven的生命周期:
有三个阶段:
clean生命周期
default生命周期
Compile test package install deploy
执行任何一个步骤,此步骤之前的步骤都会执行。
site生命周期
不同的生命周期可以同时执行:
Mvn clean package 先清除再打包
mvn package clean 先打包再清除
maven的依赖范围scope主要用到的有4个:
compile:
其为默认值,不写scope标签时,取值为compile
其意义为相对应的jar包在编译、测试、打包、运行这四个阶段都需要用到。
举例:struts2-core-2.3.24.jar
编译时:需要
测试(test命令):需要
打包:需要
运行:需要
provided:
其意义为相对应的jar包在编译、测试、运行这三个阶段都需要用到。
一般当容器提供了对应的jar包时需要用到这个范围
注:tomcat8版本自动去重,就算jar包重复了,也会进行选择,选择依赖提供的jar包来使用。
举例:servlet-api.Jar
编译时:需要
测试(test命令):需要
打包:不需要
运行:需要
test:
其意义为相对应的jar包在测试这一个阶段需要用到。
一般都为junit测试用到。
举例: junit.jar
编译时:不需要
测试(test命令):需要
打包:不需要
运行:不需要
runtime:
其意义为相对应的jar包在测试、打包、运行这三个阶段都需要用到。
一般这种情况编译时基本都是基于接口编程。
举例:数据库驱动包
编译时:不需要
测试(test命令):需要
打包:需要
运行:需要