Maven基础(黑马)

121 阅读3分钟

Maven简介

传统项目管理状态分析

image.png

Maven是什么

  • 本质上是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型

Maven使用java开发,万物皆对象(包括项目本身) image.png

Maven的作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目管理 image.png

下载与安装

Maven下载

Maven配置

  • 配置JAVA_HOME
  • 配置MAVEN_HOME image.png
  • 配置PATH

image.png

  • 输入mvn命令检查

image.png

Maven基础概念

仓库

基本概念

  • 仓库:用于存储资源,包含各种jar包
  • 仓库分类:
    • 本地仓库:自己电脑上存储资源的仓库,;连接怨恨曾仓库获取资源
    • 远程仓库:非自己电脑上的仓库,为本地仓库提供资源
      • 中央仓库:Maven团队维护,存储所有资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
  • 私服的作用:
    • 保存具有版权的资源,包含购买或自主研发的jar
      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放 image.png

仓库配置

本地仓库配置

  • 默认位置 <localRepository>${user.home}/.m2/repository</localRepository>
  • 自定义位置(打开conf/setting文件) image.png

远程仓库配置

  • 默认
<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工程目录结构

image.png

  • 在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工程目录对比

image.png

第一个Maven项目(IDEA生成)

idea创建Maven工程

image.png

image.png

使用原型创建项目

原型创建Java项目

image.png

原型创建web项目

image.png

WEB-INF是Java的WEB应用的安全目录,客户端无法访问,只能通过服务端访问,从而实现了代码的安全。在WEB-INF中主要是系统运行的配置信息和环境

修改port端口

在这里插入图片描述

快捷启动

在这里插入图片描述

web.xml介绍和tomcat7运行插件

在这里插入图片描述

依赖管理

依赖配置

在这里插入图片描述

依赖传递

在这里插入图片描述

依赖具有传递性

在这里插入图片描述

依赖传递冲突问题

在这里插入图片描述

可选依赖

在这里插入图片描述

排除依赖

在这里插入图片描述
在这里插入图片描述

依赖范围

在这里插入图片描述
在这里插入图片描述

生命周期与插件

Maven对项目构建的生命周期划分为3套

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

default构建生命周期

在这里插入图片描述

插件

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述