Maven简介
传统项目管理状态分析
Maven是什么
- 本质上是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
- POM(Project Object Model):项目对象模型
Maven使用java开发,万物皆对象(包括项目本身)
Maven的作用
- 项目构建:提供标准的、跨平台的自动化项目构建方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
- 统一开发结构:提供标准的、统一的项目管理
下载与安装
Maven下载
Maven配置
- 配置JAVA_HOME
- 配置MAVEN_HOME
- 配置PATH
- 输入mvn命令检查
Maven基础概念
仓库
基本概念
- 仓库:用于存储资源,包含各种jar包
- 仓库分类:
- 本地仓库:自己电脑上存储资源的仓库,;连接怨恨曾仓库获取资源
- 远程仓库:非自己电脑上的仓库,为本地仓库提供资源
- 中央仓库:Maven团队维护,存储所有资源的仓库
- 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
- 私服的作用:
- 保存具有版权的资源,包含购买或自主研发的jar
- 中央仓库中的jar都是开源的,不能存储具有版权的资源
- 一定范围内共享资源,仅对内部开放
- 保存具有版权的资源,包含购买或自主研发的jar
仓库配置
本地仓库配置
- 默认位置
<localRepository>${user.home}/.m2/repository</localRepository> - 自定义位置(打开conf/setting文件)
远程仓库配置
- 默认
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
镜像仓库配置
- 在setting文件中配置阿里云镜像仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
坐标
- 什么是坐标?
- Maven中的坐标用于描述仓库中资源的位置
- Maven坐标的组成部分:
- groupId:定义当前Maven项目隶属组织名称,通常是域名反写,例如:org.mabitis
- actifactId:定义当前Maven项目名称,通常是模块名称
- version:定义当前版本号
- 坐标的作用:
- 使用唯一标识,唯一性定位资源位置,可以通过该标识将资源的识别和下载由机器完成
第一个Maven项目(手动生成)
Maven工程目录结构
- 在src同层目录下创建pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.itheima</groupId>
<artifactId>project-java</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
Maven项目构建命令
- 在pom.xml同级目录下运行命令
mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库
使用插件生成工程
- 创建工程
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
- 创建java工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -
DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -
DinteractiveMode=false
- 创建web工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
- java工程与web工程目录对比
第一个Maven项目(IDEA生成)
idea创建Maven工程
使用原型创建项目
原型创建Java项目
原型创建web项目
WEB-INF是Java的WEB应用的安全目录,客户端无法访问,只能通过服务端访问,从而实现了代码的安全。在WEB-INF中主要是系统运行的配置信息和环境
修改port端口
快捷启动
web.xml介绍和tomcat7运行插件
依赖管理
依赖配置
依赖传递
依赖具有传递性
依赖传递冲突问题
可选依赖
排除依赖
依赖范围
生命周期与插件
Maven对项目构建的生命周期划分为3套
default构建生命周期
插件