maven笔记
Maven
1、maven的作用
-
项目依赖管理
-
项目一键构建
2、maven的安装与配置
-
下载二进制安装包,直接解压
-
配置MAVEN_HOME环境变量为安装目录
-
在path路径中添加%MAVEN_HOME%\bin即可
注意:maven依赖java环境,需要确保JAVA的正确安装,并且配置了JAVA_HOME
在命令行窗口运行mvn -v查看maven是否正确安装
3、maven的仓库
maven的仓库分为三类,分别为本地仓库,中央仓库,远程仓库,启动一个maven项目,默认从本地仓库找jar包,如果配置了远程仓库,在本地仓库没有的情况下,会从远程仓库中找jar包,如果还是没有则会从中央仓库找jar包。私服是一种特殊的远程仓库,是架设在局域网中的远程仓库,供局域网内的maven用户使用。中央仓库必须在联网的情况下才能使用(非局域网),如果将远程仓库配置在局域网中,则可以在局域网中使用(即非联网情况下使用),即私服,远程仓库也可以配置在互联网中。
在maven的配置文件settings.xml文件中,默认${user.dir}/.m2/repository为本地仓库的位置,${user.dir}表示windows用户目录,在启动maven项目时,会自动在本地仓库中找相应的jar包,如果是第一次构建maven项目,本地仓库里面为空的,在联网情况下,会自动在中央仓库中下载相应的jar包,放入本地仓库。
中央仓库中几乎放置了所有开源的jar包,中央仓库的默认位置http://repo1.maven.org/maven2,公司在实际开发中使用到的jar包有限,一般为了在不联网的情况下(局域网),也能正常开发,公司会再创建一个私服,可以通过本地仓库向私服传jar包,也可以从中央仓库向私服下载jar包。
为了方便管理本地仓库,可以手动设置本地仓库的路径,在settings.xml中的配置
<localRepository>/path/to/local/repo</loaclRepository>(放在<settings>中)。
4、mave项目标准目录结构
核心代码、配置文件、测试代码、测试配置文件
src/main/java目录 放置核心代码
src/main/resources 放置配置文件
src/test/java目录 放置测试代码
src/test/resources 放置测试配置文件
上面是maven的java项目目录,如果是java-web项目,还有一个目录
src/main/webapp目录 放置页面资源
5、maven中常见的命令
进入maven的项目文件中
mvn clean 删除编译文件(删除target目录)
mvn compile 编译main目录下的java文件(放置在target目录下)
mvn test 编译main和test目录下的java文件(放置在target目录下)
mvn package 编译main和test目录下的java文件并打包(都放置在target目录下)
默认打成war包,在settings.xml中<package>war<package>中默认配置了<package>
mvn install编译main和test目录下的java文件并打包,并且将项目放置在了本地仓库
6、maven的生命周期
maven项目会经历编译(compile)、测试(test)、打包(package)、安装(install)、发布(deploy)过程
执行后面的过程,前面的过程都会执行一次,这是maven的默认生命周期,还有一套生命周期叫站点生命周期,在实际开发中用得不多。在编译项目之前,需要通过mvn clean命令清理之前的生命周 期,再重新构建。
7、maven的概念模型
项目对象模型(pom.xml):项目自身信息、项目运行所需的jar包信息、项目运行所需的环境信息,包括jdk\tomcat信息
依赖管理模型(dependencies):从项目运行所需的jar包信息独立出来的,放置的全部都是jar包的坐标,jar包的坐标由三个基本信息组成,groupId(公司组织的名称)、artifactId(项目名)、version(版本号),只能比这个信息多,不能比这个少。
项目的生命周期:使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期。
一组标准:maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
插件(plugin) :maven 管理项目生命周期过程都是基于插件完成的。
8、IDEA集成maven插件
在IDEA的setting中配置maven的安装目录,maven的settings.xml文件和本地仓库的路径。
10、maven中央仓库的设置
来源https://www.cnblogs.com/jpfss/p/11312684.html
由于网络原因从官方的中央仓库下载jar包困难,可以手动配置下载jar包的位置
可以将 Maven 的远程仓库统一的配置到 Maven 的 settings.xml 的配置文件中
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
11、maven构建java-web项目
在运行maven构建的java-web项目的时候,在写servlet\jsp\测试代码的时候,需要导入相应的sevlet、jsp和junit的jar包,否则会报错,但是maven在运行web项目的时候采用的是自身的tomcat插件,它的lib目录下具有相应的jar包,如果再导入jar包,就会出现jar包冲突的问题,导致web项目无法正常运行,但是在编写代码的时候不导入jar包又会报错。
看似是个悖论,为了解决该问题可以在pom.xml文件中配置jar包的作用范围,servlet和jsp相关的jar包配置为<scope>provided<scope>,junit的相关jar包配置为<scope>test<scope>。