【学习笔记】初级的Maven学习

本文介绍了Maven作为Java项目的依赖管理和构建工具的重要性,包括其解决jar包管理难题、自动化构建的功能。详细讲解了Maven的坐标、POM配置、约定的目录结构以及构建过程中的清理、编译、测试、打包和安装等步骤。通过实验展示了如何在命令行环境中创建和管理Maven项目,强调了Maven在项目开发中的便捷性和规范性。
摘要由CSDN通过智能技术生成

1、为什么要学习Maven

笔记地址
旧版

1.1、Maven作为依赖管理工具

①jar包的规模
随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里面用到上百个jar包是非常正常的。

②jar包的来源
这个jar包所属技术的官网。官网通常是英文界面,网站的结构又不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载。
第三方网站提供下载。问题是不规范,在使用过程中会出现各种问题。

  • jar包的名称
  • jar包的版本
  • jar包内的具体细节

而使用Maven后,依赖对应的jar包能够自动下载,方便、快捷又规范。

③jar包之间的依赖关系
框架中使用的jar包,不仅数量庞大,而且彼此之间存在错综复杂的依赖关系。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。另外,jar包之间有可能产生冲突。进一步增加了我们在jar包使用过程中的难度。

1.2、Maven作为构建管理工具

①你没有注意过的构建
你可以不使用Maven,但是构建必须要做。当我们使用IDEA进行开发时,构建是IDEA替我们做的。

②脱离IDE环境仍需构建
在这里插入图片描述

2. 什么是Maven?

Maven是Apache 软件基金会组织维护的一款专门为Java 项目提供构建和依赖管理支持的工具。
在这里插入图片描述

2.1、构建

Java项目开发过程中,构建指的是使用『原材料生产产品』的过程。

  • 原材料
    。Java源代码
    。基于HTML的Thymeleaf文件
    。图片
    。配置文件
    ……
  • 产品
    。一个可以在服务器上运行的项目

构建过程包含的主要的环节:

  1. 清理:删除上一次构建的结果,为下一次构建做好准备|
  2. 编译:Java源程序编译成*.class字节码文件
  3. 测试:运行提前准备好的测试程序
  4. 报告:针对刚才测试的结果生成一个全面的信息
  5. 打包 Java工程:jar包/Web工程:war包
  6. 安装:把一个Maven工程经过打包操作生成的jar包或war包存入Maven仓库
  7. 部署:将准备好的jar包或war包部署到服务器上运行
    部署jar包:把一个jar包部署到Nexus私服服务器上
    部署war包:借助相关Maven插件(例如cargo),将war包部署到Tomcat 服务器上

2.2、依赖

如果A工程里面用到了B工程的类、接口、配置文件等等这样的资源,那么我们就可以说A依赖B。例如:
· junit-4.12 依赖hamcrest-core-1.3
· thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
· ognl-3.1.26依赖javassist-3.20.0-GA
· thymeleaf-3.0.12.RELEASE依赖attoparser-2.0.5.RELEASE
· thymeleaf-3.0.12.RELEASE依赖unbescape-1.1.6.RELEASE
· thymeleaf-3.0.12.RELEASE依赖slf4j-api-1.7.26

依赖管理中要解决的具体问题:

  • jar包的下载:使用Maven之后,jar包会从规范的远程仓库下载到本地
  • jar包之间的依赖:通过依赖的传递性自动完成
  • jar包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

2.3、Maven的工作机制

在这里插入图片描述

3. Maven核心程序解压和配置

Maven核心程序解压与配置
在这里插入图片描述
在这里插入图片描述

第二节配置环境变量
在这里插入图片描述
TIP

配置环境变量的规律:

XXX_HOME 通常指向的是 bin 目录的上一级

在这里插入图片描述

PATH 指向的是 bin 目录

path配置了用户环境变量才成功。

4. 使用 Maven:命令行环境

4.1 实验—:根据坐标创建Maven工程

连接

4.1.1 Maven核心概念:坐标

①数学中的坐标
在这里插入图片描述
使用 x、y、z 三个『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』。

②Maven中的坐标
[1]向量说明

使用三个『向量』在『Maven的仓库』中唯一的定位到一个『jar』包。
groupId:公司或组织的 id
artifactId:一个项目或者是项目中的一个模块的 id
version:版本号
[2]三个向量的取值方式
groupId:公司或组织域名的倒序,通常也会加上项目名称

  • 例如:com.atguigu.maven

artifactId:模块的名称,将来作为 Maven 工程的工程名
version:模块的版本号,根据自己的需要设定

  • 例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本
  • 例如:RELEASE 表示正式版本

举例:
groupId:com.atguigu.maven
artifactId:pro01-atguigu-maven
version:1.0-SNAPSHOT 快照

③坐标和仓库中 jar 包的存储路径之间的对应关系
坐标:

  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>

上面坐标对应的 jar 包在 Maven 本地仓库中的位置:

Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar

一定要学会根据坐标到本地仓库中找到对应的 jar 包。

4.1.2 实验操作

①创建目录作为后面操作的工作空间
②在工作空间目录下打开命令行窗口
③使用命令生成Maven工程
运行 mvn archetype:generate 命令
在这里插入图片描述

TIP
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:【直接回车,使用默认值】
Define value for property ‘groupId’: com.atguigu.maven
Define value for property ‘artifactId’: pro01-maven-java
Define value for property ‘version’ 1.0-SNAPSHOT: :【直接回车,使用默认值】
Define value for property ‘package’ com.atguigu.maven: :【直接回车,使用默认值】
Confirm properties configuration: groupId: com.atguigu.maven artifactId: pro01-maven-java version: 1.0-SNAPSHOT package: com.atguigu.maven Y: :【直接回车,表示确认。如果前面有输入错误,想要重新输入,则输入 N 再回车。】

④调整

Maven 默认生成的工程,对 junit 依赖的是较低的 3.8.1 版本,我们可以改成较适合的 4.12 版本。

自动生成的 App.java 和 AppTest.java 可以删除。

⑤自动生成的 pom.xml 解读
在这里插入图片描述

  <!-- 根标签:project,表示对当前工程进行配置、管理-->
<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">
  
  <!--modelVersion标签:从Maven 开始就固定是4.0.0。-->
  <!--代表当前pom.xml所采用的标签结构。-->
  <modelVersion>4.0.0</modelVersion>
  <!-- 当前Maven工程的坐标 -->
  <!-- 在本地仓库中安装后对应的目录 -->
  <!--groupId标签:坐标向量之一;代表公司或组织开发的某一个项目-->
  <groupId>com.atguigu.maven</groupId>
  <!--artifactId标签:坐标向量之一;代表项目下的某一个模块-->
  <artifactId>pro01-maven-java</artifactId>
  <!--version标签:坐标向量之一;代表当前模块的版本-->
  <version>1.0-SNAPSHOT</version>
  
  <!-- 当前Maven工程的打包方式,可选值有下面三种: -->
  <!-- jar:生成jar包,表示这个工程是一个Java工程  -->
  <!-- war:生成war包,表示这个工程是一个Web工程 -->
  <!-- pom:表示这个工程是“管理其他工程”的工程 -->
  <packaging>jar</packaging>

  <name>pro01-maven-java</name>
  <url>http://maven.apache.org</url>

<!-- 在maven中定义属性集 -->
  <properties>
	<!-- 工程构建过程中读取源码时使用的字符集 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- 当前工程所依赖的jar包,可以包含多个depandency子标签 -->
  <dependencies>
	<!-- 使用dependency配置一个具体的依赖 -->
    <dependency>
	
	  <!-- 在dependency标签内使用具体的坐标依赖我们需要的一个jar包 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
	  
	  <!-- scope标签配置依赖的范围 -->
      <scope>test</scope>
    </dependency>
  </dependencies>

4.1.3 Maven核心概念:POM

①含义
POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现。

②模型化思想
POM 表示将工程抽象为一个模型,再用程序中的对象来描述这个模型。这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。

③对应的配置文件
POM 理念集中体现在 Maven 工程根目录下 pom.xml 这个配置文件中。所以这个 pom.xml 配置文件就是 Maven 工程的核心配置文件。其实学习 Maven 就是学这个文件怎么配置,各个配置有什么用。

4.1.4 Maven核心概念:约定的目录结构

①各个目录的作用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值