Maven
- Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
- Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
- Maven 也可被用于构建和管理各种项目。
Maven POM
POM(项目对象模型,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。
对于Maven的通俗易懂解释
maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能
1、自动下载jar包
maven项目里有一个 pom.xml文件, 在这个文件里面,只要我们添加相应配置,它就会自动帮我们下载相应jar包,不用到处搜索需要的jar包了
<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">
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/公司名称/项目 -->
<groupId>exam</groupId>
<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>exam_3</artifactId>
<!-- 打包的机制,如pom,jar,maven-plugin,war,ear,默认为jar -->
<packaging>war</packaging>
<!-- 用于描述 jar 包,jar 包 提供给其他系统作为依赖
snapshot 版本代表不稳定、尚处于开发中的版本,即快照版本
release 版本代表功能趋于稳定、当前更新停止,可以用于发行的版本(去掉-snapshot即可)
-->
<version>0.0.1-SNAPSHOT</version>
<!-- 定义本项目的依赖关系 -->
<dependencies>
<!-- 每个dependency都对应这一个jar包 -->
<dependency>
<!-- maven是通过groupId(项目名)、artifactId(项目模块)、version(版本)这三个元素值(俗称坐标)来检索该构件,然后引入你的工程 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->
<properties>
<file.encoding>UTF-8</file.encoding>
<java.source.version>1.5</java.source.version>
<java.target.version>1.5</java.target.version>
</properties>
</dependencies>
</project>
maven会通过:项目名-项目模块-项目版本,在互联网上的代码库中下载相应jar包。
2、寻找依赖,下载依赖包
寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。
在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有<dependency>
配置,只要我们配置的jar包有依赖的其他jar包都会被maven自动下载下来。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.6</version>
</dependency>
3、热部署,热编译
简单来讲,就是在你web项目已经运行的时候,修改代码可以直接被web服务器所接受,不需要我们重启服务器了,或者重新部署代码了,而且我们可以直接通过maven 打包war或者jar项目。
Maven 仓库
在 Maven 的术语中,仓库是一个位置(place)。
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 仓库有三种类型:
- 本地(local)
- 中央(central)
- 远程(remote)
本地仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
远程仓库
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。