一、功能和优点
(一)功能
1.项目构建
2.依赖管理
jar包管理(类型管理、版本管理)
二、安装与配置
(一)下载与安装
1.下载
百度网盘CSDN4文件夹下。
官方地址:
2.安装
解压即可使用(解压路径避免中文、空格)。
配置环境变量:前提要有Java环境(不会配置的首页找Java环境变量配置文章)。
(1)Path:maven解压路径bin包位置。
(2)检测:cmd-->java -version 查看
(3)maven解压路径conf包setting文件:profiles-->profil中jdk解注,版本修改为1.8
(二)目录结构
maventest
|--src
|-- |--main
|-- |-- |--java --项目的源代码所在目录
com.zhang.entity
com.zhang.dao
|-- |-- |--resources --项目的资源文件所在目录
|-- |-- |--webapp --如果是web项目,则该目录是web应用源代码的目录
|-- |-- |-- |-- WEB-INF
|-- |-- |-- |-- |-- web.xml
|-- |-- test
|-- |-- |--java --测试代码所在目录,入junit测试类
com.zhang.dao.test
|-- |-- |--resources --测试相关的资源文件所在目录
|-- target --项目构建的输出文件,如.class、.jar、.war文件(不需要创建,会自动生成)
|-- pom.xml --Maven项目核心配置文件,项目的描述文件
(三)Maven仓库
1.分类
本地仓库:本地仓库相当于一个缓存,在电脑上是一个文件夹,我们可以设置这个文件夹的路径(具体怎么设置会在下面的配置体现),工程第一次需要某种jar包时,会从远程仓库(互联网)下载并保存到本地仓库中(在程序员的电脑上),当第二次使用时,不需要去远程仓库下载,会先去本地仓库中找,如果找不到才会去远程仓库上下载。
默认情况下。每个用户在自己的用户目录下都有一个路径名为.m2/respositoryl的仓库目录。
maven解压路径conf包setting文件:配置本地仓库解注,路径修改为自己的仓库位置:repository
远程仓库:中央仓库(Maven官方维护)和私服(局域网架设的仓库)。
配置远程仓库镜像:maven解压路径conf包setting文件
<!--配置阿里云镜像-->
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorof>*</mirrorof>
</mirror>
<!--其中各个标签的含义是:
id:当前镜像的准一标识
mirrorof :将哪个远程仓库当做中央仓库镜像,中央仓库的id是central,所以将阿里云的Maven仓库
设为中央仓库镜像时,其值必须设置为central
name:为当前的中央仓库镜像起一个名字,便于开发者阅读
url:阿里云Maven仓库的地址-->
2.核心文件pom.xml
<project xmlns="http://Maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Maven.apache.org/POM/4.0.0
http: /Maven.apache.org/xsd/Maven-4.0.0.xsd">
<! -- Maven模型的版本―->
<modelversion>4.0.0</modelVersion>
<!--公司或者组织的准一标志,并且配置时生成的路径也是由此生成,如com.companyname.project-group, Maven会将该项目打成的jar包放本地路径:com/companyname/project-group -->
<groupId>com.kkb.Maven</groupId>
<!--项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的--><artifactId>Helloworld</artifactId>
<!--当前项目版本号:同一个项目开发过程中可以发布多个版本,此处标示0.0.1版-->
<!--当前项目版本号:每个工程发布后可以发布多个版本,依赖时调取不同的版本,使用不同的版本号
当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本
-->
<version>0.0.1-snapshot</version>
<!--打包类型,一般有jar、war、pom等-->
<packaging>jar</packaging>
<!--名称:可省略,常用于Maven生成的文档。-->
<name>Hello</name>
<!--项目描述:可省略,常用于Maven生成的文档-->
<description > </description>
<!--项目依赖构件配置,配置项目依赖构件的坐标-->
<dependencies>
<!--依赖设置,可以有多个dependency节点-->
<dependency>
<!--依赖组织名称-->
<groupId>junit</groupId>
<!--依赖项目名称-->
<artifactId>junit</ artifactId>
<!--依赖版本名称-->
<version>4.12</version>
<! --依赖范围:test包下依赖该设嚣-->
<scope-test</scope>
</dependency>
</dependencies>
<!--项目构建配置,配置编译、运行插件等。-->
<build> ......</build>
</project>
三、生命周期
(一)定义
Maven生命周期就是为了对所有的构建过程进行抽象和统一,包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤,生命周期可以理解为构建工程的步骤。
(二)Maven三大生命周期
Mlaven拥有三套相互独立的生命周期:分别是clean、default和Dsite。
clean Lifecycle:在进行真正的构建之前进行一些清理工作。mvn clean
default Llfecycle:构建的核心部分。编译,测试,打包,部暑等等。
site Lifecycle:生成项目报告,站点。发布站点。
四、Idea搭建Maven项目
Idea仓库设置Maven仓库地址:
setting:conf中路径。
repository:仓库repository。
Runner:取消勾选代理(Delegate)、选择JRE
五、Maven创建Java项目
方式一:Project---Maven---jdk选择---Create---maven-archetype-quickstart---项目名---地址---组织名---项目名---版本---确认信息。
方式二(推荐):Project---Maven---jdk选择---项目名---地址---组织名---项目名---版本---确认信息。
六、Maven创建JavaWeb项目
方式一(推荐):Project---Maven---jdk选择---Create---maven-archetype-webapp---项目名---地址---组织名---项目名---版本---确认信息。
方式二:Project---Maven---jdk选择---项目名---地址---组织名---项目名---版本---确认信息。
需要添加webapp文件夹:file---project structure---modules---+Web---下方选择目录结构到webapp---上方路径调整---Artifacts---+Web App...Ex...---from--OK
七、Maven创建Web项目知识点
(一)使用内置TomCat
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/zhang</path>
</configuration>
</plugin>
</plugins>
</build>
(二)常用命令
Maven的命令需要在pom.xml所在目录中执行以下命令。
1.mvn compile
执行mvn compile命令,完成编译操作。执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
2.mvn clean
执行mvn clean命令,执行完毕后,会将target目录删除。
3.mvn test
执行mvn test命令,完成单元测试操作。执行完毕后,会在target目录中生成新的文件夹,例如:surefire-reports(测试报告) 、test-classes(测试的字节码文件)。
4.Maven package
执行mvn package命令,完成打包操作。执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war。
5.mvn install
执行mvn install命令,完成将打好的jar包安装到本地仓库的操作执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用。
6.mvn clean compile命令
cmd中录入mvn clean compile命令,组合指令,先执行clean,再执行compile,通常应用于上线前执行,清除测试类。
7.mvn clean test命令
cmd中录入mvn clean test命令,组合指令,先执行clean,再执行test,通常应用于测试环节。
8.mvn clean package命令
cmd中录入mvn clean package命令,组合指令,先执行clean,再执行package,将项目打包,通常应用于发布前。
执行过程:
清理----清空环境编译----编译源码
测试----测试源码
打包----将编译的非测试类打包
9.mvn clean install命令
cmd中录入mwn clean install查看仓库,当前项目被发布到仓库中组合指令,先执行clean。再执行install,将项目打包,通常应用于发布前。
执行过程:
清理----清空环堤编译----编译源码
测试----测试源码
打包----将编译的非测试类打包部署----将打好的包发布到资源仓库中
(三)依赖管理知识点
1.原理
2.依赖范围(scope标签的取值)
依赖范围(Scope) | 对于主代码classpath有效 | 对于测试代码classpath有效 | 被打包,对于运行时classpath有效 | 例子 |
compile | Y | Y | Y | log4j |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | - | Y | JDBC Driver Implemenyation |