1.下载maven
http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/
2.maven安装(解压不要放在有中文或特殊字符的目录下)
解压后的目录有
-
bin:含有mvn运行的脚本
-
boot:含有plexus-classworlds类加载器框架,Maven使用该框架加载自己的类库。
-
conf:含有settings . xml配置文件
-
lib:含有Maven运行时所需要的java类库
3.maven配置
maven的conf目录中有settings.xml,是maven的配置文件,做以下配置
- 本地仓库配置
- jdk版本配置
- 远程仓库配置
4.在idea中关联Maven
5.创建maven项目
项目结构
- src/main/java存放源代码,建包,放项目中代码(service,dao,User…)
- src/main/resources书写配置文件,项目中的配置文件(jdbc.properties)
- src/test/java书写测试代码,项目中测试案例代码
- src/test/resources书写测试案例相关配置文件
- 目根/pom.xml (project object model) maven项目核心文件,其中定义项目构建方式,声明依赖等
- 注意:项目中的建包,建类,执行,都和普通项目无差异
项目类型
根据项目类型,在pom.xml中做出对应配置,添加配置:war/jar
<?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>org.example</groupId>
<artifactId>day52mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<!--打包方式:web项目用war java项目用jar-->
<packaging>war</packaging>
</project>
6.导入依赖jar
建好项目后,需要导入需要的jar,要通过坐标
- 每个构件都有自己的坐标= groupld + artifactld + version =项目标识+项目名+版本号
- 在maven项目中只需要配置坐标, maven便会自动加载对应依赖。删除坐标则会移除依赖
查找依赖:依赖查找服务:https://mvnrepository.com/,获得依赖的坐标,在maven项目中导入。
导入依赖:
<?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>org.example</groupId>
<artifactId>day51maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!-- 如此做了后,在别的机器上运行自己的jar,就不会爆jdk版本低的错误。 -->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!-- 导入的依赖放在dependencies标签中,如果本地仓库有依赖可以直接使用,如果本地仓库中没有,刷新后会从远程仓库中下载 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--jsp编译环境-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!--mybatis-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--lombok插件-->
<dependency>
<groupId>cn.itlym.shoulder</groupId>
<artifactId>lombok</artifactId>
<version>0.1</version>
<scope>provided</scope>
</dependency>
<!--jstl支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--Servlet编译环境-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
7.webapp目录
按照maven规范,新增web项目特有目录
8.部署web项目
新增tomcat
9.依赖生命周期
jar包生效的时间段,即jar的生命周期
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--生命周期--> <scope>test</scope>
</dependency>
<!--jsp编译环境-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<!--生命周期--> <scope>provided</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
<!--生命周期-->
</dependency>
</dependencies>
10.生命周期详解
- compile:缺省值,适用于所有阶段(测试运行,编译,运行,打包)
- provided:类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet-api.jar,适用于(测试运行,编译)阶段
- runtime:只在运行时使用,如mysql的驱动jar,适用于(运行,测试运行)阶段
- test:只在测试时使用,适用于(编译,测试运行)阶段,如junit.jar
- system:Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段