一、 Maven 简介

1 什么是 Maven

目前无论使用 IDEA 还是 Eclipse 等其他 IDE,使用里面 ANT 工具。ANT 工具帮助我们进行编译,打包运行等工作。

Apache 基于 ANT 进行了升级,研发出了全新的自动化构建工具 Maven。(知道:ANT 有的功能 MAVEN 都有,只是使用起来更加方便了)。

Maven 工具基于 POM(Project Object Model,项目对象模型)模式实现的。在 Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现 Maven 项目可以更加方便的实现导 jar 包、拆分项目等效果。

Maven 是跨平台的,这意味着无论是在 Windows 上,还是在 Linux 或者 Mac 上,都可以使用同样的命令。

Maven 还有一个优点,它能帮助我们标准化构建过程。在 Maven 之前,十个项目可能有十种构建方式。有了 Maven 之后,所有项目的构建命令都是标准化。

Maven 还为全世界的 Java 开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。

2 Maven 的作用

1)Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。

2)Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。

3)Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。

二、 Maven 的下载与 IDE 的整合

3 Maven 下载

http://maven.apache.org/download.cgi

4 Idea 整合 Maven

在 Idea 中默认已经整合了 Maven。由于 Idea 的版本不同,所整合的 Maven 的版本也不同。

如果需要更换其他版本可在 Idea 中进行配置。

idea maven项目和java项目有什么区别_xml

三、 Maven 仓库与配置

1 Maven 仓库是什么

1.1 Maven 仓库

Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,这要得益于 Maven 的坐标机制,任何 Maven 项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。

坐标:坐标有三个部分构成,如果一个部分不同那么表示的就是不同的 jar。

Group Id: 公司名,多用公司网址倒写

Artifact Id: 项目名

Version: 版本

对于 Maven 来说,仓库分为两类:本地仓库和中央仓库。

1.1.1 中央仓库

中央仓库是互联网上的服务器,是 Maven 提供的最大的仓库,里面拥有最全的 jar 包资源。默认是 Maven 自己的网络服务器,但是由于访问速度较慢,我们一般都配置成国内的镜像中央仓库如阿里镜像或者是华为镜像。

Maven 中央仓库访问页面: https://mvnrepository.com/

1.1.2 本地仓库

本地仓库指用户电脑中的文件夹,该文件夹中包含了自己下载的构件(jar 包)。文件夹结构为 groupid 分级的文件夹/artifactid 文件夹/version 文件夹/包含 jar 包。

2 仓库的访问优先级

2.1 本地仓库

第一访问本地仓库。

2.2 远程仓库

2.2.1镜像仓库

镜像仓库是 Maven 开发过程中的首选远程仓库,在本地仓库无法获取资源的时候,直接访问镜像仓库。

2.2.2 中央仓库

中央仓库是 Maven 官方提供的远程仓库,在本地仓库无法获取资源的时候,直接访问中央仓库。

idea maven项目和java项目有什么区别_maven_02

3 配置 Maven

3.1 在 settings.xml 文件中配置本地仓库

本地仓库是开发者本地电脑中的一个目录,用于存储从远程仓库下载的构件(jar 包)。

默认的本地仓库是${user.home}/.m2/repository。用户可使用 settings.xml 文件修改本地仓库。具体内容如下:

<localRepository>C:\Users\Administrator\.m2\repository</localRepository>

3.2 在 settings.xml 文件中配置镜像仓库

如果仓库 A 可以提供仓库 B 存储的所有内容,那么就可以认为 A 是 B 的一个镜像。

例如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。这时,我们可以使用阿里云提供的镜像 http://maven.aliyun.com/nexus/content/groups/public/来替换中央仓库 http://repol.maven.org/maven2/。修改 maven 的 setting.xml 文件,具体内容如下:

<mirror>
	<!-- 指定镜像 ID -->
	<id>nexus-aliyun</id>
	<!-- 匹配中央仓库。-->
	<mirrorOf>central</mirrorOf>
	<!-- 指定镜像名称 -->
	<name>Nexus aliyun</name>
	<!-- 指定镜像路径 -->
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3.3 配置 JDK 版本

<profile>
	<id>jdk-1.8</id>
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	</activation>
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	</properties>
</profile>

四、 Maven 工程类型

1 POM 工程

POM 工程是逻辑工程。用在聚合工程中,或者父级工程用来做 jar 包的版本控制。

2 JAR 工程

创建一个 Java Project,在打包时会将项目打成 jar 包。

3 WAR 工程

创建一个 Web Project,在打包时会将项目打成 war 包。