带你了解Maven,并搞定安装和配置

•写在前面

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

介绍Maven

相信我们都开发过一个java web项目,我们可以把传统的开发方式以及过程总结成一下几点

  • 在IDEA中创建一个java web工程
  • 在工程中编写源代码及配置文件等
  • 对源代码进行编译,java文件编译成class文件
  • 执行Junit单元测试
  • 将工程打成war包部署至tomcat运行

而当我们使用Maven作为构建工具,即把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程,这整个过程如下,这些过程可以实现自动化完成

  • 编译:java源文件[.java]->编译->Classz字节码文件[.class]
  • 部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件
  • 清理clean:将以前编译得到的旧文件class字节码文件删除
  • 编译compile:将java源程序编译成class字节码文件
  • 测试test:自动测试,自动调用junit程序
  • 报告report:测试程序执行的结果
  • 打包package:动态Web工程打War包,java工程打jar包
  • 安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置
  • 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行

有了Maven的协助,我们可以实现一个命令完成构建、运行,方便快捷,并且maven对每个构建阶段进行规范,非常有利于大型团队协作开发。

Maven的优势

一个项目就是一个工程: 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程

改变了原来jar引入的麻烦: 同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。
jar下载: 借助于maven我们可以使用统一的规范方式下载jar包,规范

jar包版本控制: 不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。

简化jar包依赖: 比如FileUpload组件的IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。
这里借助网上的一张图说明一下
在这里插入图片描述

Maven安装

我们可以试着先执行 mvn -v 指令查看我们是否有安装Maven,这个指令用来查看Maven的版本。
首先第一步当然是下载Maven啦,这里我附上Maven官方的下载地址选择如下版本
在这里插入图片描述
记得检查一下当前系统是否配置JAVA_HOME的环境变量,下载好Maven之后,解压Maven放在一个非中文无空格的路径下,我自己是放在了D盘,下一步就是配置Maven的相关环境变量,很简单,在环境变量增加M2_HOME,路径是Maven解压后的根目录,在环境变量里的path中增加maven/bin的目录,我自己是直接在Path中加了Maven的bin的绝对路径,没有弄M2_HOME,我这样方便点,上面那样是正规一点,如下。
在这里插入图片描述
安装之后,执行 mvn -v 查看Maven版本,我自己的是Maven3.5.4

Maven仓库

这里要介绍一下Maven仓库的概念,Maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了

  • 本地仓库就是用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。
  • 远程仓库则是,如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录。
  • 中央仓库 则是在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。

配置Maven仓库

我们在Maven的安装目录下,创建一个repository,如下
在这里插入图片描述
然后在Maven的安装目录下找到conf目录下的settings.xml配置文件,打开此文件配置本地仓库的路径,配置内容如下
在这里插入图片描述

Maven配置阿里源

Maven因为是中央库在国外,所以我们在加载一些依赖的时候会很慢,这里配置一下阿里源。我们在Maven的安装目录下,打开setting.xml,找到,在下面加上这一段信息

<mirror>  
  <id>nexus-aliyun</id>  
  <mirrorOf>*</mirrorOf>  
  <name>Nexus aliyun</name>  
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

在这里插入图片描述

Maven常用命令

Maven命令列表 说明
mvn –version 显示版本信息
mvn clean 清理项目生产的临时文件,一般是模块下的target目录
mvn compile 编译源代码,一般编译模块下的src/main/java目录
mvn package 项目打包工具,会在模块下的target目录生成jar或war等文件
mvn test 测试命令,或执行src/test/java/下junit的测试用例
mvn install 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
mvn deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
mvn site 生成项目相关信息的网站
mvn eclipse:eclipse 将项目转化为Eclipse项目
mvn dependency:tree 打印出项目的整个依赖树
mvn archetype:generate 创建Maven的普通java项目
mvn tomcat:run 在tomcat容器中运行web应用 需要插件支持 只有tomcat1.7的插件,没有1.8的,所以tomcat8.0用不了此命令
mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

值得一提的是,运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xml文件所在的目录。否则,必以通过参数来指定项目的目录,如下。
在这里插入图片描述
以上就是安装和配置的全过程,当然了,在真实的开发中,我们都是会在软件中采用图形界面化的方式来运行Maven命令,比如我们的IDEA 帮我们集成好了Maven项目的管理模块,那我们就可以使用IDEA来操作Maven项目了

Maven在Idea中说明

这里值得一提的是,Maven构建的项目必须遵守如下的项目结构,这是Maven构建项目的约定

  |-src
  |   |-main
  |   |  |-java        —— 存放项目的.java文件
  |   |  |-resources   —— 存放项目资源文件,如spring, hibernate配置文件
         |-webapp     —— webapp目录是web工程的主目录
            |-WEB-INF
              |-web.xml
  |      |-test
  |      |-java        ——存放所有测试.java文件,如JUnit测试类
  |      |-resources   —— 测试资源文件
  |-target             —— 目标文件输出位置例如.class、.jar、.war文件
  |-pom.xml           ——maven项目核心配置文件

我们可以手动创建Maven项目,但必须遵守上面的目录格式,但是我们一般是通过软件帮我们创建的,不管是软件创建,还是手动创建,都必须遵循Maven的目录结构,如图所示 IDEA 创建出来的Maven项目结构如下
在这里插入图片描述
pom.xml是一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的座标、项目依赖、项目信息、插件目标等

依赖范围的介绍

添加jar包的座标时,还可以指定这个jar包将来的作用范围
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了93 篇原创文章 · 获赞 474 · 访问量 93万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章