Maven快速入门(IDEA版) - 尚硅谷

本文档详细介绍了Maven的作用,解决开发中遇到的问题,如jar包管理,以及Maven的核心概念,包括目录结构、POM、坐标、仓库、生命周期等。还阐述了在IDEA中配置和使用Maven的步骤,包括安装、配置本地仓库、阿里云镜像,以及创建和导入Maven项目。此外,文档提供了依赖管理和插件目标的概念,帮助读者理解Maven自动化构建的工作原理。
摘要由CSDN通过智能技术生成

尚硅谷的Maven课程,自己学习时记录的笔记
b站视频:Maven零基础入门教程


一、概述

(一) 为什么需要Maven

1. 目前的技术

在这里插入图片描述

Maven 并不是直接用来辅助编码的,它战斗的岗位并不是以上各层。所 以我们有必要通过企业开发中的实际需求来看一看哪些方面是我们现有技术的不足。


2. 开发中存在的问题

2.1 一个项目就是一个工程
  • 如果项目非常庞大,就不适合继续使用 package 来划分模块。最好是每一个模块对应一个工程,利于分工协作。
  • 借助 Maven 就可以将一个项目拆分成多个工程。
2.2 项目需要的jar包必须手动“复制”、“粘贴”到WEB-INF/lib目录下
  • 同样的 jar 包文件重复出现在不同的项目中,一方面浪费存储空间,另一方面也让工程显得很臃肿。
  • 借助 Maven ,可以将 jar 包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件接口,并不需要真的把 jar 包复制过来。
2.3 jar包需要别人替我们准备好,或到官网下载
  • 不同技术的官网提供 jar 包下载的形式是五花八门的。有些技术官网就是通过 Maven 或 SVN 等专门的工具来提供下载的。如果是以非正规的形式下载 jar 包,那么其中的内容很可能也是不规范的。
  • 借助于 Maven 可以以一种规范的方式下载 jar 包。因为所有知名框架或第三方工具的 jar 包以及按照统一的规范存放在了 Maven 的中央仓库中。以规范的方式下载的 jar 包,内容也是可靠的。
  • Tips:“统一的规范”不仅是对IT开发领域非常重要,对于整个人类社会都是非常重要的。
2.4 一个jar包依赖其他jar包需要自己手动加入到项目中
  • jar 包往往不是孤立存在的,很多 jar 包都需要在其他 jar 包的支持下才能够正常工作,我们称之为 jar 包之间的依赖关系。最典型的例子是: commons-fileupload-1.3.jar 依赖于 commons-io-2.0.1.jar ,如果没有 IO 包,FileUpload 包就不能正常工作。
  • Maven 会自动将被依赖的 jar 包导入进来。

(二) 什么是Maven?

1. Maven 简介

Maven 是 Apache 软件基金会组织维护的一款自动化 构建 工具,专注服务于 Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。

构建概念

构建并不是创建,创建一个工程并不等于构建一个项目。

以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源作为“原材料”,去“生产”一个可以运行的项目的过程。

编译、部署、搭建

1.1 编译

以Java源文件[User.java] --> 编译 --> Class字节码文件[User.class] --> 交给JVM去执行

1.2 部署

(1)一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程“编译的结果”。

  • 生的鸡 --> 处理 --> 熟的鸡
  • 动态Web工程 --> 编译、部署 --> 编译结果

在这里插入图片描述

在开发过程中,所有的路径或配置文件中配置的类路径等都是以编译结果的目录结构为标准的。

(2)Tips:运行时环境

在这里插入图片描述

其实是一组 jar 包的引用,并没有把 jar 包本身复制到工程中,所以并不是目录。

(3)构建过程中的各个环节

  • ① 清理:删除以前的编译结果(旧的class字节码文件),为重新编译做好准备。
  • ② 编译:将 Java 源程序编译为class字节码文件。
  • ③ 测试:自动调用 JUnit 程序,针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  • ④ 报告:在每一次测试后以标准的格式记录和展示测试结果。
  • ⑤ 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
  • ⑥ 安装:在 Maven 环境下特指将打包的结果—— jar 包或 war 包安装到“仓库”中的指定位置。
  • ⑦ 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

(4)自动化构建

将“编译、打包、部署、测试”,这些程式化的工作交给机器。

2. 部署 Maven 核心程序

参考:尚硅谷_Maven操作步骤截图.pdf + 视频p7
IDEA版本见笔记第三部分


二、Maven 核心概念

①POM ②约定的目录结构 ③坐标 ④依赖管理 ⑤仓库管理 ⑥生命周期 ⑦插件和目标 ⑧继承 ⑨聚合

(一) 约定的目录结构

1. 创建约定的目录结构

  • 创建第一个 Maven 工程,工程名:Hello。参考:Maven操作指南.txt
  • [1] 根目录:工程名;[2] src目录:源码;[3] pom.xml文件:Maven 工程的核心配置;[4] main目录:存放主程序;[5] test目录:存放测试程序;[6] java目录:存放Java源文件;[7] resourse目录:存放框架或其他工具的配置文件

在这里插入图片描述

2. 为什么要遵守约定的目录结构?

  • Maven 要负责我们这个项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 源文件保存在哪里。

  • 如果我们自己自定义的东西想让框架或工具知道,有两种办法:

    • 以配置的方法明确告诉框架

      <param-value>Classpath:spring-context.xml</param-value>
      
    • 遵守框架内部以及存在的约定

      • log4j.propertieslog4j.xml 形式
  • 现在 JavaEE 开发领域普遍认同一个观点:约定 > 配置 > 编码。意思就是能用配置解决的问题就不编码, 能基于约定的就不进行配置。而 Maven 正是因为指定了特定文件保存的目录才能够对我们的 Java 工程进行自动化构建。


(二) 常用命令和联网问题

注意:执行与构建过程相关的 Maven 命令,必须进入 pom.xml 所在的目录。

  • 与构建过程相关:编译、测试、打包、…

1. 常用 Maven 命令

在 cmd 中输入命令

(1)mvn clean:清理

(2)mvn compile:编译主程序

(3)mvn test-compile:编译测试程序

(4)mvn test:执行测试

(5)mvn package:打包

(6)mvn install:安装

(7)mvn site:生成站点

2. 关于联网问题

(1) Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成。而插件本身并不包含在 Maven 的核心程序中。

(2)当我们执行的 Maven 命令需要用到某些插件时, Maven 核心程序会首先到本地仓库中查找。

(3)本地仓库的默认位置:[系统中当前用户的家目录].m2\repository

C:\Users\[登录当前系统的用户名]\.m2\repository

(4) Maven 核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库下载。如果此时无法连接外网,则构建失败。

(5)修改默认本地仓库的位置可以让 Maven 核心程序到我们事先准备好的目录下查找插件。

  • 找到 Maven 解压目录

    D:\develop\Maven\apache-maven-3.2.2\conf\settings.xml
    
  • settings.xml 文件中找到 localRepository 标签,并将标签从注释中取出

  • 将标签体内容修改为以及准备和的Maven仓库目录:

    <localRepository>/path/to/local/repo</localRepository>
    
    • 改成:(记得先把 RepMaven.zip 压缩包解压,并放到 RepMaven 文件夹中)
    <localRepository>D:\develop\Maven\RepMaven</localRepository>
    

(三) POM

  • Project Object Model:项目对象模型。将 Java 工程的相关信息封装为对象作为便于操作和管理的模型。(DOM Document Object Model:文档对象模型)
  • pom.xml 对于 Maven
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值