一、概述
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
- Maven 是一个基于 Java 的工具,安装 JDK。
- 下载,安装maven。
- 配置环境变量。
idea中集成了maven,不必下载安装。
pom.xml:
执行任务或目标时,Maven 会在当前目录中查找 POM,获取所需的配置信息,然后执行目标。
所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。
<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/xsd/maven-4.0.0.xsd">
<!-- 模型版本,固定4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志 -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version>
<!-- 该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。 -->
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.8</version> </dependency> </dependencies></project>
Maven 仓库
能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 仓库有三种类型:
- 本地(local)默认用户目录下有一个路径名为 .m2/respository/ 的仓库目录。
maven ==》 conf ==》 settings.xml 中修改本地仓库的位置
- 中央(central)
- 远程(remote)
Maven 阿里云(Aliyun)仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:
第二步: pom.xml文件里添加:
<!--发现依赖和扩展的远程仓库列表。 --> <repositories> <!--包含需要连接到远程仓库的信息 --> <repository> <!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库 --> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--如何处理远程仓库里发布版本的下载 --> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
依赖管理:
比如说 A 依赖于其他库 B,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B。
Maven 可以避免去搜索所有所需库的需求,Maven 通过读取项目文件(pom.xml),找出它们项目之间的依赖关系。
我们需要做的只是在每个项目的 pom 中定义好直接的依赖关系。其他的事情 Maven 会帮我们搞定。
二、idea中创建maven管理的java项目
create from archetype(从原型创造):使用模板。
文件结构:
公司名自动当成包名。java放代码,resource放资源。
为文件分配权限:
写代码,配置Tomcat。
三、idea中创建maven管理的java Web项目
文件结构:
四、概念模型
五、Maven 构建生命周期
idea右侧有Mavenue Project。双击命令,或者选择点击绿色三角按钮。
complie:编译main下面的代码
test:不仅编译main下面的代码,还有test下的代码
package:编译还有生成war包
install:编译,war包,还有放入本地仓库
运行: