maven是什么?
maven的本质是一个项目管理工具,将项目开发和管理过程抽象看成一个对象。
maven的作用?
maven的作用我们可以分成三类:
1 项目构建:提供标准的,跨平台的自动化构建项目的方式
2 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题。
3 统一开发结构:提供标准的,统一的项目开发结构
maven的仓库:用于存储资源,主要是各种jar包
仓库有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库。
中央仓库:maven团队自身维护的仓库,属于开源的。
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库中获取资源。
本地仓库:开发者自己电脑上存储资源的仓库,也可以从远程仓库中获取资源。
maven中存储了各种各样的资源(jar包),那么我们需要确定资源位置,需要用到坐标。
manen的坐标主要组成如下:
groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;)
artifactId:定义当前资源的名称(通常是项目或模块名称)
version:定义当前资源的版本号
packaging:定义资源的打包方式,取值一般有三种
1 jar:资源打成jar包,默认也是jar
2 war:资源打成war包,
3 pom:资源是一个父资源(表明使用maven的分模块管理),打包时只生成pom.xml不生成jar或其他包结构
工作中使用:pom用在父模块中,jar用在子模块,war用在准备在服务器上部署的模块
如果想要查询某一个资源的坐标,可以区maven的仓库中去查询(https://mvnrepository.com/repos/central)
项目构建:
maven的构建命令主要以mvn开头,后面添加功能参数,可以一次执行多个命令,用空格分离
mvn compile:编译
mvn clean:清理
mvn test:测试
mvn package:打包
mvn install:安装到本地仓库
pom文件的常见配置
<?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/maven-v4_0_0.xsd">
<!-- 指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 打包方式,web工程打包为war,java工程打包为jar-->
<packaging>war</packaging>
<name>mvnweb</name>
<!-- 组织id-->
<groupId>org.example</groupId>
<!-- 项目id-->
<artifactId>mvnweb</artifactId>
<!-- 版本号-->
<version>1.0-SNAPSHOT</version>
<!-- 设置当前项目所依赖的所有jar-->
<dependencies>
<!-- 设置具体的依赖-->
<dependency>
<!-- 依赖所属的群组id-->
<groupId>junit</groupId>
<!-- 依赖所属的项目id-->
<artifactId>junit</artifactId>
<!-- 依赖版本号-->
<version>4.12</version>
<!-- jar包的使用范围-->
<scope>compile</scope>
<!-- 可选依赖,对外隐藏当前所依赖的资源-->
<optional>true</optional>
<!-- 排除依赖,指主动断开依赖的资源,被排除的资源无需指定版本-->
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 构建-->
<build>
<!-- 设置插件-->
<plugins>
<!-- 插件的具体配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>10010</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
scope标签的取值主要有四种:
compile:任何范围都可以使用,同时也是默认值
test:只能用于测试
provided:主代码与测试代码可以使用(理解:provided是提供支持,只给代码提供支持。线上运行不能用,只有在开发测试阶段能够使用)
servlet-api就是不用打包进去,因为代码打包后是运行在tomcat中,而tomcat中自带servlet-api这个包
runtime:打包可用(理解:runtime:运行时,这个运行是指程序上线运行,与provided正好相反)
maven常用的一套流程:
compile-->test-compile-->test-->package-->install