1 maven概念介绍
问题:maven工具有哪些作用?
maven是一款项目管理工具,可以帮助我们自动==构建项目==(也叫项目构建:编译、测试、打包、部署、运行的操作),可以帮助我们统一==管理依赖==(也叫依赖管理,就是统一管理我们的jar包),可以统一项目结构。
2 下载安装和环境变量
下载地址:http://maven.apache.org/download.cgi
【第一步】:配置MAVEN_HOME,名字叫==MAVEN_HOME==,如图
【第二步】:配置path,值是:==%MAVEN_HOME%\bin==,如图
【第三步】:测试环境变量是否配置成功
maven的基本概念
1 仓库
-
本地仓库:本质就是自己电脑上的一个文件夹,里面存储了我们平时自己使用的jar包
-
私服仓库:是远程仓库的一种,是在公司局域网内的一个仓库,局域网内的所有用户共享。
-
中央仓库:是远程仓库的一种,有maven团队维护,服务器在国外,访问很慢。
访问的优先级问题
maven优先访问本地仓库,如果本地仓库有jar包,直接获取。如果本地仓库没有,并且没有配置私服仓库,那么直接从中央仓库获取jar包。如果配置了私服仓库,那么就会去私服仓库获取,如果私服仓库没有就去中央仓库获取。只要访问了中央仓库,jar包都会从中央仓库自动下载到私服仓库或者本地仓库,方便下一次使用。
本地仓库-------->私服仓库--------->中央仓库
2 坐标
查找jar包坐标的网址:http://mvnrepository.com/
作用:jar包在仓库中位置的唯一标识,通过这个标识就可以找到唯一的一个jar包。
3 仓库配置
3.1 配置本地仓库
3.2 配置阿里中央仓库镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
创建第一个maven程序
1 maven项目结构
1 一键构建命令
在maven项目中pom.xml文件所在目录文件路径位置输入cmd,打开cmd命令行,执行下列命令
注意:这些命令需要在pom.xml所在的目录下执行
mvn clean 清除项目编译信息,会删除target目录
mvn compile 编译项目,生成target目录,该目录中保存的都是编译后的class文件。
mvn test 运行项目的所有测试类的测试方法,生成测试结果
mvn package 将项目打包,Java项目生成jar包,web项目生成war包
mvn tomcat:run 在内置的tomcat6中运行web项目,运行成功之后可以通过浏览器访问。【不推荐】
mvn tomcat7:run 在tomcat7中运行web项目,前提是在pom.xml中配置tomcat7插件
mvn install 将打好的jar包/war包上传到本地仓库
2 idea集成maven工具
Close project--->Configure--->settings--->搜索“maven”
集成成功之后,可以新建project。如果是使用之前的project,那么需要给之前的project重新集成maven,做法为:file--->settings--->搜索“maven”,配置同上。
3 创建Java项目
方式一:使用模板
方式二:不使用模板
如果右下角有如下弹框,选中自动导入:
4 创建web项目
方式一:使用模板
方式二:不使用模板
第一步:做法和“不使用模板”创建Java项目一致
第二步:安装插件,将Java项目转换为Maven工程
注意:如果不安装插件,需要在pom.xml文件中添加打包方式
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>maven_web2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--默认是打jar包,web项目需要打war包,必须添加-->
<packaging>war</packaging>
</project>
5 配置tomcat7插件模板
<!--配置Tomcat7.0插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<uriEncoding>utf-8</uriEncoding>
</configuration>
</plugin>
注意:tomcat7插件需要配置在<build><plugins>.........</plugins></build>中
6 在maven的settings.xml中配置全局的jdk1.8插件
在profiles标签中配置jdk1.8插件
<profile>
<!-- 定义的编译器插件 ID,全局唯一 -->
<id>jdk-1.8</id>
<!-- 插件标记,activeByDefault 默认编译器,jdk提供编译器版本 -->
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<!-- 配置信息 source-源信息,target-字节码信息,compilerVersion-编译过程版本 -->
<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>
<maven.compiler.encoding>utf-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</profile>
依赖管理
1 依赖配置和依赖传递
依赖传递以及依赖冲突
可选依赖
依赖排除
2 依赖范围
说明:在添加Servlet和jsp依赖时,必须要添加provided范围,否则运行项目会出现依赖冲突
<!--添加Servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--添加jsp依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
生命周期与插件
生命周期分成三部分
默认生命周期
目录
6 在maven的settings.xml中配置全局的jdk1.8插件