Maven项目管理工具【学习笔记】

Maven

1、Maven介绍

1.1、什么是Maven

     Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于
基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内
行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、
依赖管理。

1.2、Maven的作用
  • 依赖管理
    • 依赖指的就是是 我们项目中需要使用的第三方Jar包, 一个大一点的工程往往需要几十上百个
      Jar包,按照我们之前的方式,每使用一种Jar,就需要导入到工程中,还要解决各种Jar冲突的问题
    • Maven可以对Jar包进行统一的管理,包括快速引入Jar包,以及对使用的 Jar包进行统一的版本控
  • 一键构建项目
    • 之前我们创建项目,需要确定项目的目录结构,比如 src 存放Java源码, resources 存放配置文
      件,还要配置环境比如JDK的版本等等,如果有多个项目 那么就需要每次自己搞一套配置,十分麻烦
    • Maven为我们提供了一个标准化的Java项目结构,我们可以通过Maven快速创建一个标准的Java项目

2、Maven的使用

2.1、Maven的下载、安装、配置

参考地址

2.2、Maven工程改造

先创建一个空格maven模块
然后开始改造

  1. 创建webapp
    在这里插入图片描述
  2. 修改路径信息
    在这里插入图片描述
  3. 修改前后

    在这里插入图片描述
  4. 这样即可
    5.
2.3、pom.xml核心文件配置

maven官网

  • 一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的信息、项目依赖、引入插件等等。

  • pom.xml 文件中引入依赖包的坐标

  • 一个Maven工程就是由 groupId , artifactId 和 version 作为唯一标识, 我们在引用其他第三方库的时候,也是通过这3个变量确定。

    • 在maven中坐标就是为了定位一个唯一确定的jar包
    • maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范,拥有了统一规范,就可以把查找工作交给机器Maven坐标主要组成(GAV) - 确定一个jar在互联网的位置
标签含义
groupId定义当前Maven组织名称,通常是公司名
artifactId定义实际项目名称
version定义当前项目的当前版本
packaging打包类型jar:执行 package 会打成 jar 包 war:执行 package 会打成 war 包
dependency使用 声明一个依赖后,Maven就会自动下载这个依赖包
 <dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies>
2.4、Maven的常用命令
  • 一个maven项目的生命周期
    使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些 过程规范为一个生命周期,如下所示是生命周期的各各阶段:
    在这里插入图片描述
    maven 通过执行一些简单命令即可实现上边生命周期的各个过程
命令说明
mvncompile完成编译操作 , 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
mvn clean执行完毕后,会将target目录删除.
mvn test执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)
mvn
package完成打包操作, 执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war
mvn install执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作 ,执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用

注意:这里package命令打包war包的时候可能会出现Cannot access defaults field of Properties这个报错信息,解决方法在pom.xml中指定package插件的版本即可

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>3.3.1</version>
</plugin>
  • idea中安装好maven后, 在界面左侧有一个maven视图, 里面有对应的命令插件,可以执行上面表格中的命令
    在这里插入图片描述
  • 工具栏介绍
    在这里插入图片描述

1.根据pom.xml文件重新导入所有Maven项目和依赖,刷新
2.创建源码(重新编译)并更新目录
3.下载源码或文档
4.添加Maven项目
5.执行生命周期中的阶段,选中lifecycle选项中生命周期中的一个阶段(phase),才能点击执行。
6.运行Maven生命周期或插件
7.切换离线模式,就是关闭和远程仓库的链接,从本地仓库中获取,也不能将jar包提交到远程仓库
8.是否跳过测试,点击选中就可以跳过测试,在点击选择取消跳过测试
9.展示当前选中的maven项目jar包的依赖,并且可以直接在图形化依赖图上进行排除依赖操作
10.收起下面展开的视图
11.跳转到maven的Setting页面

  • 依赖范围介绍
    A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包括:
依赖范围说明
compile编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
providedprovided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。
runtimeruntime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
testtest 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以test范围依赖不会被打包。
systemsystem 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值