Maven
Posted 奔跑的路奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven相关的知识,希望对你有一定的参考价值。
Maven
1 Maven概述
1.1 Maven简介
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
就是可以通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。
1.2 Maven的两大功能
1:项目构建
项目构建是一个项目从:源代码、编译、测试、打包、部署、运行的过程。
Maven项目构建过程
Maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段:
2:依赖管理
什么是依赖?一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。
例如大家前面学过的javaWeb中需要的连接数据库的jar包、数据源的jar包等等。
Maven项目的依赖管理
Maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(Maven工程的配置文件)添加jar包的坐标,自动从Maven仓库中下载jar包运行。
使用Maven依赖管理添加jar的好处:
1、通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
2、Maven团队维护了一个非常全的Maven仓库,里边包括了当前使用的jar包,Maven工程可以自动从Maven仓库下载jar包,非常方便。
2 Maven的安装与配置
2.1 Maven的下载
自己可以自行从 网站 下载。
2.2 Maven的安装
将下载好的Maven安装包解压到一个不含有中文和空格的目录中。
maven目录说明
bin目录: 该目录包含了 mvn 运行的脚本
boot目录: Maven运行需要类加载器
conf目录: 该目录包含了一个非常重要的文件 settings.xml。直接修改该文件,就能在机器上全局 地定制 Maven 的行为
lib目录: Maven运行依赖jar包
2.3 配置Maven环境变量
前提必须有java的环境变量
配置Maven环境变量
通过 mvn -v命令检查 Maven是否安装成功
3 Maven的核心概念
3.1 Maven的目录结构
Maven默认约定了一套目录结构,在通过Maven创建了项目以后,项目的目录结构就是以这套目录结构作为模板创建的。
Maven约定的目录结构:
3.2 Maven的仓库
在 Maven中可以将仓库理解位一个位置,一个专门存放项目中依赖的第三方库的位置。
maven的仓库可以分为本地仓库、第三方仓库(私服)、中央仓库
1:本地仓库
默认情况下,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
工程第一次需要某种jar包时,会从远程仓库(互联网)下载并保存到本地仓库中(在程序员的电脑上),
当第二次使用时,不需要去远程仓库下载,会先去本地仓库中找,如果找不到才会去远程仓库上下载。
2:中央仓库
工程依赖的jar包如果本地仓库没有,默认从中央仓库下载
中央仓库中的jar包由专业团队(Maven团队)维护,中央仓库中存放了全世界大多数流行的开源软件的jar包,是Maven默认的远程仓库。
保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。
3:第三方仓库
第三方仓库,又称为内部中心仓库,也称为私服。
私服:一般是由公司自己设立的,只为本公司内部共享使用。
私服可以使用的是局域网,中央仓库必须使用外网。
注意:连接私服,需要单独配置。如果没有配置私服,默认不使用
编写依赖后的流程图:
3.3 Maven的坐标
在Maven中坐标就是为了定位一个唯一确定的jar包。
Maven坐标主要组成
groupId:定义当前Maven项目组织名称
artifactId:定义实际项目名称
version:定义当前项目的当前版本或者是所依赖的jar包的版本
<groupId>com.zijie</groupId>
<artifactId>Maven</artifactId>
<version>1.0-SNAPSHOT</version>
3.4 Maven的生命周期
3.4.1 什么是生命周期
Maven生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤。生命周期可以理解为构建工程的步骤。
3.4.2 Maven三大生命周期
Maven拥有三套相互独立的生命周期,分别是clean、default和site.
clean Lifecycle: 在进行真正的构建之前进行一些清理工作。 mvn clean
default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。
site Lifecycle: 生成项目报告,站点,发布站点。
4 Maven常用指令
mvn compile
执行 mvn compile命令,完成编译操作。
执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
mvn clean
会将target目录删除。
mvn test
执行 mvn test命令,完成单元测试操作。执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)
Maven package
执行 mvn package命令,完成打包操作。
执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war
mvn install
执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作
执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用
5 Maven插件
5.1 Maven编译插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
5.2 Tomcat插件
我们之前创建的web项目都需要额外配置tomcat以后才能运行项目,现在Maven提供了tomcat插件,这样我们就无需再添加额外的tomcat了。
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port><!-- tomcat的端口 -->
<path>/</path><!-- 项目的访问路径-->
</configuration>
</plugin>
</plugins>
</build>
点击“add configuration”,按照图片中的步骤添加tomcat命令,运行tomcat插件
也可以直接点击运行:
最后,如果有问题,希望指正,一起进步。
以上是关于Maven的主要内容,如果未能解决你的问题,请参考以下文章
Spring+SpringMVC+MyBatis+Maven框架整合
关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段
如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?