全网最全、最新Maven构建工具核心知识(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

1.Maven介绍


  • Maven是一个项目构建工具(这就是个构建项目的辅助,不使用也可以)
  • 软件是一个工程(软件工程) :为了能够实现软件的流水线生产,在设计模式和构建软件时能够有一种规范和工程化的方法,人们便提出软件工程概念。


2. 完成一个Java项目,需要做哪些工作


  • 1.分析项目要做什么,知道项目有哪些组成部分。
  • 2.设计项目,通过哪些步骤,使用哪些技术。需要多少人, 多长的时间。
  • 3.组建团队,招人, 购置设备,服务器, 软件, 笔记本。
  • 4.开发人员写代码。 开发人员需要测试自己写代码。 重复多次的工作。
  • 5.测试人员,测试项目功能是否符合要求。 测试开发人员提交代码-如果测试有问题–需要开发人员修改–在提交代码给测试 测试人员在测试代码-如果还有问题-在交给开发人员-开发人员在提交-在测试 直到-测试代码通过。


3.传统开发项目的问题,没有使用Maven管理的项目


1)很多模块,模块之间有关系, 手工管理关系,比较繁琐。

2)需要很多第三方功能, 需要很多jar文件,需要手工从网络中获取各个jar

3)需要管理jar的版本, 你需要的是mysql.5.1.5.jar 拿你不能给给一个mysql.4.0.jar

4)管理jar文件之间的依赖, 你的项目要使用a.jar 需要使用b.jar里面的类。 必须首先获取到b.jar才可以, 然后才能使用a.jar.

a.jar需要b.jar这个关系叫做依赖,或者你的项目中要使用mysql的驱动,
也可以叫做项目依赖mysql驱动。 a.class使用b.class,a依赖b类
复制代码


4.Maven作用(改进项目的开发和管理)


1)maven可以管理jar文件

2)自动下载jar和他的文档,源代码

3)管理jar直接的依赖, a.jar需要b.jar , maven会自动下载b.jar

4)管理你需要的jar版本

5)帮你编译程序,把java编译为class

6)帮你测试你的代码是否正确。

7)帮你打包文件,形成jar文件,或者war文件

8)帮你部署项目


5.项目的构建


  • 在以上操作中,测试、编译、打包、部署都是属于构建的过程。
  • 构建是面向过程的,就是一些步骤,完成项目代码的编译测试运行打包部署等等。


5.1 maven支持的构建包括


  • 清理 :  把之前项目编译的东西删除掉,我新的编译代码做准备。
  • 编译 :  把程序源代码编译为执行代码, java-class文件 这个编译是批量的,maven可以同时把成千上百的文件编译为class。(可以一次将项目中的所有java文件编译为class)
          这个编译和javac 不一样,javac一次编译一个文件。
  • 测试  : maven可以执行测试程序代码,验证你的功能是否正确。这个测试也是批量的,maven同时执行多个测试代码,同时测试很多功能(方法)。如果不使用Maven,一次只能测试一个功能(方法)。
  • 报告 :  生成测试结果的文件, 测试有没有通过。
  • 打包 : (测试成功后叫打包) 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件, 通常的java程序,压缩文件扩展名是.jar 扩展的。对于web应用,这个压缩文件扩展名是.war
  • 安装 :  把打包中生成的文件jar,war安装到本机仓库
  • 部署 :  把程序安装好可以执行。

前六步使用Maven进行实现,最后一步部署由开发人员自己完成,使用Maven会复杂.


6.Maven核心概念


  • Maven能够实现自动化构建和他的内部原理分不开,这里我们从Maven的九个核心概念入手,
    看看Maven是如何实现自动化构建的。


6.1 Maven的九个核心概念


  1. POM :  一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型。maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
  2. 约定的目录结构 : maven项目的目录和文件的位置都是规定的。
  3. 坐标 : 是一个唯一的字符串,用来表示资源的。
  4. 依赖管理 : 管理你的项目可以使用jar文件。
  5. 仓库管理 (了解) :你的资源存放的位置。
  6. 生命周期 (了解) : maven工具构建项目的过程,就是生命周期。
  7. 插件和目标 (了解) :执行maven构建的时候用的工具是插件。
  8. 继承 :maven中的继承其实就是继承pom.xml中的依赖,然后在子项目中就可以直接使用父项目中引用的jar和项目,作用和传递依赖一样,只是写法不同。类似于Java中的继承。
  9. 聚合:把子项目的构建过程串到一起。一个项目往往由多个模块构成的,在进行构建时,针对每个模块都进行构建命令是一件非常繁琐又容易出错的事情**,**所以Maven的聚合功能能够替我们完成进行一次构建命令完成全部模块的构建。把好几个项目合在一起。

讲maven的使用,先难后易的。 难是说使用maven的命令,完成maven使用 , 在idea中直接使用maven,代替命令。


7.Maven的安装与配置


  • 需要从maven的官网下载maven的安装包 apache-maven-3.3.9-bin.zip
  • 解压安装包,解压到一个目录,非中文目录。解压文件介绍:
  • bin目录放置maven的一些工具(里边的mvn.cmd,这是maven的一个命令,这个命令可以执行Maven的构建项目)。
  • conf目录下有一个 settings.xml 文件,这个是Maven这个工具的配置文件。
  • lib目录下存放的是jar包,Maven工具是由Java语言编写的。
  • 配置环境变量 : 在系统的环境变量中,指定一个M2_HOME的名称, 指定它的值是maven工具安装目录,bin之前的目录
M2_HOME=D:\work\maven_work\apache-maven-3.3.9
 再把M2_HOME加入到path之中,在所有路径之前加入 %M2_HOME%\bin;
复制代码
  • 验证,新的命令行中,执行mvn -v(这个命令代表测试这个Maven的版本号)


8.Maven核心----工程约定目录结构


  • 所谓约定就是已经规定好的,可以不按照这个约定做,但是一般情况下还是按照这个约定来。
  • 约定是大家都遵循的一个规则。
  • 每一个Maven项目在磁盘中都是一个文件夹。(这个文件夹就是这个项目)
假设其实有一个Hello项目 (#代表注释的意思)
Hello/
—/src
------/main          #放你主程序java代码和配置文件
----------/java      #你的程序包和包中的java文件
----------/resources #你的java程序中要使用的配置文件
------/test          #放测试程序代码和文件的(可以没有)
----------/java      #测试程序包和包中的java文件
----------/resources #测试java程序中要使用的配置文件
—/pom.xml        #maven的核心文件(maven项目必须有)
复制代码
  • 此时Mavne就会自动的去main目录下找主程序,在test目录下找测试程序。Maven要做的工作都到 pom.xml文件中去找。
  • 在启动项目的时候,Maven首先去 pom.xml文件中找Maven要做的工作,然后去main和test文件夹下寻找工作的位置
  • PowerShell是cmd的超集,cmd能做的PowerShell都能做,但是PowerShell能做的cmd不一定全能做,PowerShell是cmd可以交互使用(在cmd的黑框里可以输入PowerSehll使用PowerShell,也可以在cmd黑框中输入cmd使用cmd)
  • 不论使用PowerShell还是cmd都可以使用 tree 目录名(文件名) 来获取到该目录下的目录结构
  • 这个获取到的是该目录下其他的目录结构(文件夹的结构),不包含其中的文件(比如:pom.xml)
    微信截图_20220610120126.png

8.1获取Maven中的jar包(在 Mave中这个jar包叫做插件)


  • 如何获取,按照以上的目录创建好一个文档,在根目录下使用mvn compile编译src/main目录下的所有java文件的。此时会获取到Maven所需的全部插件(也就是jar包)。
  • 注意 : 执行mvn compile这个命令必须咋与pom.xml同一级的目录下执行Java文件。
  • 下载这些jar包的位置:在apache中央仓库。
Maven在apache中央仓库的地址
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom
复制代码
  • 为什么要下载 :maven工具执行的操作需要很多插件(java类–jar文件)完成的。如果没有这些jar包的支持,Maven是无法完成操作的。
  • 下载的东西:jar包(在Maven中叫插件)是Maven完成某些功能必要的文件。
  • 下载的jar在哪里 : 默认仓库(本机仓库) C:\Users\YunboCheng(用户名).m2\repository
  • 下载的结果:mvn compile命令执行成功后,会在该项目的根路径(与src和pom.xml同级)下生成一个target目录(结果目录).
  • 在这个target目录下,存放的是我们书写的所有Java类.class文件。


8.2 设置本机存放资源文件的目录位置(设置本机仓库)


  1. 修改maven的配置文件,maven配置文件的地址:maven安装目录/conf/settings.xml
    先备份 setting.xml
  2. 修改 localRepository 指定你的要移动的目录**(不要使用中文)**
  3. 在这个 setting.xml 中找到这行代码(此时一下的代码在这个xml文件的注释中),这个地址为下载后将这些 jar包存储的默认位置。需要将以下这行代码从注释中取出来,并且改变其中的路径。
<localRepository>/path/to/local/repo</localRepository>
<!--将这行从注释中取出来,并将路径改为自己设置的路径-->
<localRepository>/path/to/local/repo</localRepository>
<!--例如:想要改变的路径为:C:\development\Maven\Maven-jar-->
<!--注意将\改为/ 保持一致-->
<localRepository>C:/development/Maven/Maven-jar</localRepository>
复制代码


8.3 Maven的使用方式


  • 独立使用Maven:使用maven的各种命令,完成代码的编译、测试、打包等。
    比如:我们上边独立使用的Maven命令mvn compile独立完成对代码的编译。
  • 结合开发工具使用:一般可以在idea中使用Maven : 简单、快捷、不需要记住命令。
    9. Maven核心----仓库的概念
  • 仓库是存放东西的,存放maven使用的jar包 和 我们项目使用的jar包
  • maven使用的插件(各种jar)
  • 我项目使用的jar(第三方的工具,比如:myql驱动、jackson)


9.1 仓库的分类


  • 本地仓库: 就是你的个人计算机上的文件夹,存放各种jar
  • 远程仓库: 在互联网上的,使用网络才能使用的仓库(远程仓库包括以下三种)
    ①中央仓库 :最权威的, 所有的开发人员都共享使用的一个集中的仓库repo.maven.apache.org :中央仓库的地址。
    ②中央仓库的镜像 :就是中央仓库的备份, 在各大洲,重要的城市都是镜像。
    ③私服 :在公司内部,在局域网中使用的, 不是对外使用的。


9.2 仓库的使用


  • maven仓库的使用不需要人为参与
  • 开发人员使用仓库的顺序:
开发人员需要使用mysql驱动---->maven首先检查本地仓库---->私服---->镜像----->中央仓库
复制代码
  • 开发人员使用远程仓库的顺序
    从远程仓库下载的仓库一定会保存到本地仓库一份


10.Maven核心----pom文件


  • pom即(Project Object Model)项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以便进行构建和描述,pom.xml是Maven的灵魂。所有,Maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。
  • pom.xml初始:以下这些参数都是pom.xml文件中的标签属性
    微信截图_20220610120458.png微信截图_20220610120506.png
    以上这些Maven核心参数都要卸载pom.xml文件中。


11.Maven核心----坐标


  • 每一个Maven项目必须有坐标,即项目的唯一标识。
  • groupId + artifactId +  version 三个信息组成的代表一个坐标
  • 这个坐标在唯一值,在互联网中唯一的标识一个项目。

微信截图_20220610120758.png

11.1 中央仓库

  • mvnrepository.com/ (mvn中央仓库的地址)
  • 在这个中央仓库中你可以下载所需饿一切jar包,需要什么在网页中搜索即可。
    例如 :所搜mysql会找出有关mysql数据库的信息,连接驱动等.....
    微信截图_20220610120808.png
  • 以上是搜索mysql之后显示的信息,包括了MySQL Connector/J » 8.0.26 所属的公司名称、这个版本的原始下载地址、提供了pom版本文件的下载与jar包形式的下载机制、最重要的是提供了这个版本的数据库的唯一标识(即定位)在下边的那个Maven框框。这个坐标有MySQL的公司(即甲骨文公司提供)
  • 使用这个中央仓库最主要的就是去这个仓库中寻找这个 pom.xml文件中的这个Maven依赖代码,将这个依赖代码复制到我们的pom.xml文件中,Mavne会自动下载这个所需的jar包,并且会在自定义的本地(或者默认的本机仓库存储一份)


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
前端开发 JavaScript Java
npm与Maven:前端与后端构建工具深度对比学习
npm与Maven:前端与后端构建工具深度对比学习
|
6天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
6天前
|
IDE Java Maven
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
101 1
|
12月前
|
Java 大数据 测试技术
大数据基本开发工具的构建工具的Maven
在大数据开发中,构建工具是不可或缺的一部分。Maven 是一个非常流行的 Java 构建工具,也被广泛应用于大数据项目中。本文将介绍 Maven 在大数据基本开发工具中的应用以及如何使用 Maven 构建和管理大数据项目。
76 0
|
存储 Java 测试技术
全网最全、最新Maven构建工具核心知识(二)
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
全网最全、最新Maven构建工具核心知识(二)
|
存储 Java 关系型数据库
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
|
SQL XML 缓存
高效使用Java构建工具,Maven篇|云效工程师指北
高效使用Java构建工具,Maven篇。众所周知,当前最主流的Java构建工具为Maven/Gradle/Bazel,针对每一个工具,我将分别从日常工作中常见的场景问题切入,例如依赖管理、构建加速、灵活开发、高效迁移等,针对性地介绍如何高效灵活地用好这3个工具。
1564 2
高效使用Java构建工具,Maven篇|云效工程师指北
|
XML IDE Java
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
245 0
【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
|
Ubuntu Java Apache
Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
相信作为Java开发者的你早已经受够了maven的编译缓慢,但是又由于历史包袱、使用习惯等问题暂时切换不了其他更快的构建工具,这里笔者将给你介绍一款更快的maven——maven-mvnd。
Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
|
Java Maven
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
216 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)

热门文章

最新文章

推荐镜像

更多