Java搬砖人不得不学习的项目管理工具——Maven,日常3y?

笔记大纲
  • 为什么要学习Maven?

    • 添加第三方jar包
    • jar包之间的依赖关系
    • 处理jar包之间的冲突
    • 获取第三方jar包
    • 将项目拆分成多个工程模块
    • 实现项目的分布式部署
  • Maven是什么?

    • 自动化构建工具
    • 项目自动构建
  • 如何使用Maven?

    • 检查JAVA_HOME环境变量
    • 解压Maven的核心程序
    • 配置Maven环境变量
    • 查看Maven版本信息与验证安装是否正确
    • 配置Maven本地仓库(重点)

1.为什么要学习Maven?
1.1.添加第三方jar包

  在JavaEE开发中,我们会使用了大量的第三方框架和工具,我们在使用Jar包最常见的方式就拷贝到项目WEB-INF目录下lib目录下。这样就显得很麻烦,因为每次创建新的工程就需要将jar包拷贝到lib目录下,就会造成工作区中存在大量重复的文件。

  当我们使用Maven后,每个jar包只在本地仓库中保存一份,需要jar包的工程只需要维护一个文本形式的jar包的引用——称之为“坐标”。节约了存储空间,项目更加轻巧,避免了重复文件太多而造成的混乱!

1.2.jar包之间的依赖关系

  我们知道项目中Jar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能够正常工作,我们称之为jar包之间的依赖关系。例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如没有IO Jar包,FileUpload包就不能正常工作!

  作为开发者,大多时候,我们是很难准确的引入这些Jar,特别是Jar很多时,达到百个,如果我们还需要手工逐一确认依赖的Jar,那将是一个复杂的工程!当我们引入Maven后,Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了大量的时间和精力。比如通过Maven导入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar会被自动导入,作为开发者就不必了解这个依赖关系。

1.3.处理jar包之间的冲突

  上面说到Jar包不足项目会无法成功运行,但其实有的时候jar包多了项目仍然无法正常工作,这就是jar包之间的冲突!当我们使用Maven时就可以自动的处理Jar包之间的冲突问题。Maven中内置了两条依赖原则:最短路径者优先和先声明者优先。

1.4.获取第三方jar包

  Jar包种类繁多,几乎每个jar包在其本身的官网上的获取方式都不尽相同,不规范的方式获取的jar包也往往是不规范的。

  使用Maven我们可以享受到一个完全统一规范的jar包管理体系。你只需要在你的项目中以坐标的方式依赖一个jar包,Maven就会自动从中央仓库进行下载,并同时下载这个jar包所依赖的其他jar包——规范、完整、准确!一次性解决所有问题!

1.5.将项目拆分成多个工程模块

  一个大的项目已经不可能通过package结构来划分模块,必须将项目拆分成多个工程协同开发。多个模块工程中有的是Java工程,有的是Web工程。利用Maven的依赖管理机制,对拆分的工程进行互相调用和访问。

拆分的工程是上层模块依赖下层,所以下层模块中定义的API都可以为上层所调用和访问!

在这里插入图片描述

1.6.实现项目的分布式部署

  实际生产环境,项目规模增加到一定程度,为了提升性能,可能每个模块都需运行在独立的服务器上,我们称之为分布式部署,这里同样需要用到Maven。

在这里插入图片描述

2.Maven是什么?
2.1.自动化构建工具

  Maven:英文意思就是“专家”、“内行”,发音['meɪv(ə)n]['mevn],不要读作“妈文”!

  Maven是一款自动化构建工具(项目构建工具),专注服务于Java平台的项目构建和依赖管理。

  在JavaEE开发中,构建工具的发展也经历了一系列的变化:MakeAntMavenGradle→其他……

2.2.项目自动构建

构建并不是创建,创建一个工程并不等于构建一个项目,构建可以理解为把maven项目进行编译!

  (1)对于纯粹的Java代码,编写任何Java代码想要执行的话就必须经过编译得到对应的.class文件;

  (2)对JavaWeb工程,当我们需要通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的结果“拿”到服务器上的指定目录下,并启动服务器才行。这个“拿”的过程我们叫部署

  (3)对于实际项目中,我们需要整合第三方框架,Web工程中除了Java程序和JSP页面、图片等静态资源之外,还包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行!

项目构建的全过程中都包含哪些环节呢?

序号构建环节说明
清理删除以前的编译结果,为重新编译做好准备。
编译将Java源程序编译为字节码文件。
测试针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
报告在每一次测试后以标准的格式记录和展示测试结果。
打包将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
安装在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
部署将打包的结果部署到远程仓库或将war包部署到服务器上运行。

Maven实现自动化构建,简单的说来就是它可以自动的从构建过程的起点一直执行到终点:

在这里插入图片描述

Maven之所以能够实现自动化的构建,与它的设计是紧密相关的。Maven的学习主要围绕它的九个核心概念展开:

(九大核心)POM、约定的目录结构、坐标、依赖管理、仓库管理、生命周期、插件和目标继承、聚合。

3.如何使用Maven?

下面是Maven核心程序的安装和本地仓库的必要设置!

3.1.检查JAVA_HOME环境变量

Maven是Java开发的,所以必须知道当前系统环境中JDK的安装目录!

window中DOS命令:C:\Windows\System32>echo %JAVA_HOME%

在这里插入图片描述

3.2.解压Maven的核心程序

Maven官网:http://maven.apache.org/download.cgi

  将下载好apache-maven-3.5.0-bin.zip解压到本地磁盘的一个非中文无空格的目录下。

例如:E:\(001)DevelopSoftware\Maven3.5.0\apache-maven-3.5.0

在这里插入图片描述

3.3.配置Maven环境变量
系统变量配置对应值
M2_HOME(自定义)E:\(001)DevelopSoftware\Maven3.5.0\apache-maven-3.5.0
Path(自定义)%M2_HOME%\binE:\(001)DevelopSoftware\Maven3.5.0\apache-maven-3.5.0\bin
注意:这个变量应该之前已经配置了,就不用新建了,用“;”隔开,追加即可!

在这里插入图片描述

3.4.查看Maven版本信息与验证安装是否正确

在这里插入图片描述

3.5.配置Maven本地仓库

  (1)Maven默认的本地仓库:~\.m2\repository目录(~表示当前用户的家目录)

  (2)Maven的核心程序并不包含具体功能,仅负责宏观调度。具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程中央仓库下载。如果不能上网则无法执行Maven的具体功能。为了解决这个问题,我们可以将Maven的本地仓库指向一个在联网情况下下载好的目录(自定义目录,集成各种Jar,三方插件)。

  (3)Maven的核心配置文件settings.xml位置:

  我的Maven解压目录:E:\(001)DevelopSoftware\Maven3.5.0\apache-maven-3.5.0\conf\settings.xml

  (4)settings.xm文件配置

<!--【1】 指定本地仓库的位置,仓库名自定义,一般为repository-->
<!--
 localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  
-->
<localRepository>E:\(001)DevelopSoftware\Maven3.5.0\repository</localRepository>
------------------------------------------------------------------------
<!--【2】这是阿里的中央仓库镜像,较中央仓库(架设在Internet上,为全世界所有Maven工程服务)下载速率快 -->
 <mirrors>
    <!-- mirror
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
<mirror>
  <id>alimaven</id>
  <mirrorOf>central</mirrorOf>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
 <mirrors>
 ------------------------------------------------------------------------
<!--【3】JDK1.8环境指定变量设置 -->
<profile>
  <id>jdk-1.8</id>
  <activation>
	<activeByDefault>true</activeByDefault>
	<jdk>1.8</jdk>
  </activation>
  <properties>
	  <maven.compiler.source>1.8</maven.compiler.source>
	  <maven.compiler.target>1.8</maven.compiler.target>
	  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
</profile>

  Maven工具环境配置完毕,可配合客户端IDE工具Eclipse或STS使用!


 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值