POM(项目对象模型,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。
maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能
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包。
寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。 在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有<dependency>配置,只要我们配置的jar包有依赖的其他jar包都会被maven自动下载下来。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>2.6</version> </dependency>简单来讲,就是在你web项目已经运行的时候,修改代码可以直接被web服务器所接受,不需要我们重启服务器了,或者重新部署代码了,而且我们可以直接通过maven 打包war或者jar项目。
在 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 文件。