什么是Maven?
而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
若要使用Maven,那么项目的目录结构必须符合Maven的规范,其目录结构如下:
Maven基本命令
-v:查询Maven版本 本命令用于检查maven是否安装成功。
Maven安装完成之后,在命令行输入mvn -v,若出现maven信息,则说明安装成功。
compile:编译
将java源文件编译成class文件
test:测试项目
执行test目录下的测试用例
package:打包
将项目打成jar包
clean:删除target文件夹
install:安装
将当前项目放到Maven的本地仓库中。供其他项目使用
什么是Maven仓库?
Maven仓库用来存放Maven管理的所有Jar包。分为:本地仓库 和 中央仓库。
本地仓库:Maven本地的Jar包仓库。
中央仓库: Maven官方提供的远程仓库。
当项目编译时,Maven首先从本地仓库中寻找项目所需的Jar包,若本地仓库没有,再到Maven的中央仓库下载所需Jar包。
什么是“坐标”?
在Maven中,坐标是Jar包的唯一标识,Maven通过坐标在maven远程仓库中找到项目所需的Jar包。
如下代码中,groupId和artifactId构成了一个Jar包的坐标。
<dependency>
<groupId>cn.missbe.web.search</groupId>
<artifactId>resource-search</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<!--可有packaging:定义该项目的打包方式,但是属于maven -->
</dependency>
groupId:所需Jar包的项目名
artifactId:所需Jar包的模块名
version:所需Jar包的版本号
仓库地址:http://mvnrepository.com有坐标的书写方式等,直接在里面搜索;
仓库配置
现在idea默认的本地仓库是在.m2中,可以在maven里面创建文件夹(名字都可以);具体操作
IDEA如何配置 Maven 及 Maven 安装过程(详细版)_IT小郭.的博客-CSDN博客
全局setting和用户setting
全局setting定义了当前计算机中的公共配置,用户setting定义了当前用户的配置
创建maven项目
使用maven加载tomcat插件
在定位的网站上查找定位信息,
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<dependency>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</dependency>
要想添加插件,先在pom.xml中输入标签
<!-- 构建-->
<buid>
<!-- 设置插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<dependency>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</dependency>
</plugin>
</plugins>
</buid>
也可以在系统中存在的插件buid标签中进行设置
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
如果存在爆红请重新加载maven项目,点击
就可以运行起来,并到jsp页面
<!-- 设置端口号和访问路径-->
<configuration>
<!--端口不要设置为被占用端口-->
<port>80</port>
<path>/</path>
</configuration>
每次点击run非常麻烦,可以在编辑配置中,命令行一定书写正确
<?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">
<!-- 指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--组织id-->
<groupId>org.example</groupId>
<!-- 项目id-->
<artifactId>untitled1</artifactId>
<!-- 版本号:release/snapshot-->
<version>1.0-SNAPSHOT</version>
<!--打包方式,web工程打包为war,java工程打包为jar-->
<packaging>war</packaging>
<!--设置当前工程的所有依赖-->
<dependencies>
<!-- 这是代表具体的依赖-->
<dependency>
<!-- groupId:所需Jar包的项目名-->
<!-- artifactId:所需Jar包的模块名-->
<!-- version:所需Jar包的版本号-->
<groupId></groupId>
<artifactId></artifactId>
<!-- 依赖的版本-->
<version></version>
</dependency>
</dependencies>
依赖管理
依赖是指当前项目运行所需要的jar包,一个项目可以设置多个依赖
依赖的格式如上图代码
传递依赖
我们来具体配置几个依赖:
<!-- 依赖传递,比如项目1要用到项目2,就必须把项目二作为一个资源配置到项目一中去-->
<dependency> <groupId>org.example</groupId> <artifactId>untitled2</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
必须让idae显示两个项目,可以通过这种方式
可选依赖和排除依赖
依赖范围
生命周期与插件
项目构建生命周期
maven对项目构建的生命周期划分为三套
1.chean:清理工作
2.default:核心工作,例如编译、测试、打包、部署等
3. site:产生报告,发布站点
clean生命周期
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上次构建生成的文件
post-clean:执行一下需要在clean之后立刻完成的工作
default生命周期
siti的生命周期
pre-site:执行一些需要在生成站点文档之前完成的工作
site:生成项目的站点文件
post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy:将生成的站点文档部署到特定服务器上
插件
插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
默认maven在各个生命周期上绑定有预设的功能
<!--代表执行配置-->
<executions>
<!--可以配置在多个地方执行-->
<execution>
<!-- 对应的执行位置 -->
<goals>
<goal>test-jar</goal>
</goals>
<!-- 执行的生命周期-->
<phase>generate-test-resources</phase>
</execution>
</executions>
通过插件可以自定义其他功能
分模块开发与设计
工程模块与模块划分
相当于把之前的controller表现层拆分成一个项目,数据层dao独立项目,把业务层service独立,这样就进行了模块划分,他们之间通信是通过接口