一、Maven介绍
1.1什么是Maven
Maven 是一种软件项目管理工具
1.2 Maven能做什么?
1.管理整个软件开发周期 --(编译、测试、打包、安装、部署等)
2.帮助构建项目 开发人员只需要描述项目基本信息在一个配置文件中:pom.xml。
此外还提供了:
1 声明式依赖性管理
2 集中的组件库管理
3 文档的自动生成
4 报告的自动生成
设计原则:Convention Over Configuration (约定优于配置)
Maven的一个核心特性就是依赖管理。
另一个则是项目的一键构建 构建 指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给maven进行管理,这个过程称为构建。
一键构建 指的是整个构建过程,使用maven一个命令(install)可以轻松完成整个工作。
常用命令:(熟悉,关键字,借助idea开发时能认识,点击操作界面中的命令就好)
清理命令(clean)(清除编译生成的out或target目录) mvn clean
编译命令(compiler)(将源代码文件变成class文件,生成target目录)mvn compile
打包命令(package)(将项目打包为jar或war)mvn package
部署命令(install)(包含前面所有过程命令) mvn install
安装时跳过测试: mvn install -Dmaven.test.skip=true
二、 Maven的使用
安装、配置环境
2.1 Maven仓库
远程仓库:相当于互联网上的仓库
远程仓库:一般需要外网访问
私服:一般都是基于局域网访问
本地仓库:本地文件夹
2.2 依赖添加运行流程:
Maven项目在pom.xml文件中添加jar依赖坐标时,会先从本地仓库查找判断是否存在,如果没有指定坐标的jar,那么就到配置文件(安装包的conf目录中的settings.xml)中配置的远程仓库(默认配置的是中央仓库,也就是Maven公司的jar仓库)中下载,下载成功后将jar添加到本地仓库缓存(下次在其他项目中添加依赖时,就可以直接引用),然后引用到项目中
仓库配置
本地仓库
在某盘中新建一个文件夹,用作本地仓库,然后再maven的安装目录下打开settings.xml文件,配置该文件夹的路径
例如: <localRepository>F:/localRepository</localRepository>
远程仓库
打开settings.xml配置如下:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/repositories/central/\</url>
<mirrorOf>central</mirrorOf>
</mirror>
目录结构
src/main/java ------ 在该目录下新建包,存放项目的.java文件(文件一定存放在包中) src/main/resources ------ 存放项目资源文件,如spring, mybatis配置文件,以及其他静态资源文件(.css/.js.....)
src/main/webapp------ 存放项目的web资源(纯Java项目可以没有该目录),如web.xml,jsp,web-info等
src/test/java ------ 存放所有单元测试.java文件,如JUnit测试类
src/test/resources ------ 测试资源文件(该目录一般不需要)
target ------ (该目录由Maven自动运行时生成)项目输出位置,编译后的class文件会输出到此目录,等同于一阶段out目录
pom.xml------(该文件由idea创建项目时生成)maven项目核心配置文件,配置项目依赖(jar)的坐标,其他插件
**注意:项目中的目录命名的固定的,手动添加目录时不能自定义名称,注意大小写!
maven的概念模型
坐标标签模板:
dependency:依赖
group:组织
artifact:模块
version:版本号
scope:作用域,用于明确jar添加的时机
例:
java
<dependency>
<groupId>jar的组织名称(组织名称可以是多级目录,目录使用.分层)</groupId>
<artifactId>jar的模块名称(单级名称)</artifactId>
<version>jar的版本号(单级数字目录名)</version>
<scope>jar的依赖范围(一般不需要配置,只有个别需要配置)</scope>
</dependency>
依赖范围:
默认引入 的jar包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ------- provided(编译、测试 有效, 运行时无效 防止和tomcat下jar冲突)
数据库驱动jar包 ---- runtime(测试、运行 有效 )
junit ----- test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test
设置jdk编译版本
插件配置
java
插件配置 <plugins>
<!-- 依赖插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
Tomcat插件:
java
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 插件配置选项,可选项 -->
<configuration>
<path>/</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
三、 Maven的使用(重要)
3.1 Maven的安装
3.1.1 Maven软件的下载
为了使用Maven管理工具,我们首先要到官网去下载它的安装软件。通过百度搜索"Maven"如下:
点击Download链接,就可以直接进入到Maven软件的下载页面:
目前最新版是apache-maven-3.8.X版本
因为3.6.0以上版本存在和idea2018的兼容问题,所以本阶段使用3.6.0版本作为项目管理工具
Apache-maven-3.6.0下载地址:Index of /dist/maven/maven-3
2.1.2 Maven软件的安装
Maven下载后,将Maven解压到一个没有中文,没有空格 的路径下,比如F:\software_java\apache-maven-3.6.0下面。 解压后目录结构如下:
bin:存放了maven的命令,比如我们前面用到的mvn tomcat:run boot:存放了一些maven本身的引导程序,如类加载器等 conf: 存放了maven的一些配置文件,如settings.xml文件 lib:存放了maven本身运行所需的一些jar包 至此我们的maven软件就可以使用了,前提是你的电脑上之前已经安装并配置好了JDK。
2.1.3 JDK的准备及统一( 已有,就跳过)
我们所使用工具软件的统一,JDK使用JDK8版本
JDK环境:省略......
2.1.4 Maven配置
电脑上需安装java环境,安装JDK1.7 + 版本 (将JAVA_HOME/bin 配置环境变量path ),我们使用的是JDK8相关版本
配置 MAVEN_HOME(可选) ,变量值就是你的maven安装 的路径(bin目录之前一级目录)
在Path中添加:%MAVEN_HOME%\bin
上面配置了我们的Maven软件,注意这个目录就是之前你解压maven的压缩文件包在的的目录,最好不要有中文和空格。 再次检查JDK的安装目录,如下图:
2.1.5 Maven软件版本测试
通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.6.2及java版本为1.8即为安装成功。 找开cmd命令,输入mvn --v 命令,如下图:
我们发现maven的版本,及jdk的版本符合要求,这样我们的maven软件安装就成功了。
案例:
例如:
pom.xml文件
java
<?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>day24_1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<plugins>
<!-- 依赖插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 插件配置选项,可选项 -->
<configuration>
<path>/</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
index.html文件
java
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
哈喽 哈喽
</body>
</html>
web.xml文件
java
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>