Maven快速入门——基础篇

本篇对Maven基础进行总结,主要对Maven的定义、作用、Maven坐标、依赖管理、依赖配置、依赖传递特性以及Maven的生命周期进行总结,后面会对springboot以及Maven高级进行总结。

文章目录
目录

一、Maven是什么?

二、Maven的作用:

三、Maven坐标:

四、如何在idea中配置maven:

五、依赖传递

六、生命周期:


一、Maven是什么?

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理。

二、Maven的作用:

  1. 能够方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题。
  2. 提供标准统一的项目结构。例如eclipse、idea、Myeclipse 10这些虽然是不同的编译器,但是可以通过maven做到统一的项目结构。
  3. 在项目构建中可以提供跨平台(linux、window、macos)的自动化项目的构建方式。

三、Maven坐标:

什么是maven坐标:

  1. maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
  2. 使用该坐标定义项目或引入项目中所需要的依赖。

maven坐标的组成:

  1. groupId:定义当前maven项目所属的组织名称。
  2. artifactId:定义当前maven项目的名称。
  3. version:定义当前项目的版本号。

四、如何在idea中配置maven:

创建了一个空项目后,配置maven:

  • 单个项目的配置方法(一般不采用这种方法):在setting中配置maven home path为安装路径,user setting file就是config下的setting.xml文件路径,然后点击maven中的runner选择jre版本。然后配置compiler中的java compiler指定字节码版本project bytecode version;
  • ****全局配置:****点击all setting然后按照原先的配置来配置一边即可,就不用一个一个去配置了;
  1. 对于依赖配置,也就是jar包:

  2. 首先要在pom.xml文件中编写dependencies标签然后在这个标签中使用dependency标签,然后将groupid(包名) artifactid(项目名称) version(版本)这三项也就是坐标进行定义然后最后点击刷新,才可以引入成功;

如下:maven-project01就是artifctid,com.web就是groupid;

五、依赖传递

依赖具有传递性:

  • 直接传递:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目会间接依赖其他资源。

项目A依赖项目B,项目于B中有一个依赖junit,那么也会将junit依赖传递给了A。

如果A想去除这个依赖,下方用了exclusions标签将junit排除;

依赖范围:

依赖的jar包,在默认情况下可以在任何情况下使用,可以通过<scope></scope>来设置其作用范围。

scope的值有四种:compile(默认)、test(只在测试中使用)、provided(主程序和测试程序都可以使用,但是打包不可)、runtime(主程序中无法使用,测试程序以及打包可以使用)。

如下图所示:

六、生命周期:

对于生命周期,着重记忆clean(用来清理targets文件) 、compile(用来编译,产生.class文件) 、test(用来测试 ,需要在pom.xml文件中导入junit jar包) 、package(用来打包的)、install(将打包称为jar包下载到仓库)这五个阶段,在idea中执行,右方点击maven然后在package之后会将自己编写的这个代码打包成一个jar包,然后点击install之后,就会出现在对应的maven仓库中的文件夹中,以后如果要用的话,那么直接在配置文件中写这个jar包对应的坐标即可;

注意在同一套生命周期中,后面的执行,前面的也会执行,就像在default这套生命周期中,如果package执行,那么test也会执行;

采用命令行式执行maven的各个生命周期,在maven项目文件中,输入cmd然后输入对应的操作:

相关推荐
瑞码空间13 小时前
面向接口编程与开闭原则在模拟 JDBC 驱动中的应用
java·jdbc
Félix25114 小时前
Nacos学习笔记(SpringBoot/SpringCloud)
java·spring boot·spring
文丑颜不良啊14 小时前
LeetCode1581~1600题目解析
java·leetcode
香蕉大香蕉(06敬畏市场)14 小时前
MySQL 单点详解(06)
java·数据库·mysql·博客·实习
lqbzlll14 小时前
Spring Boot 开启虚拟线程后接口反而变慢了?4 个排查方向和对应修法
java·spring boot·后端
七夜zippoe14 小时前
LangChain4j vs Spring AI:Java AI 框架怎么选(对比表)
java·人工智能·spring·ai·langchain4j
悠仁さん14 小时前
【C++】set map 使用
java·前端·c++
yuniko-n15 小时前
【JUC】Thread 内存泄露
java
freejackman15 小时前
【架构篇】双遍历 + 多栈协同:手撸 SQL 血缘引擎的架构思考
java·大数据·数据库·hive·sql·架构·spark
企业数字化笔记15 小时前
业务单据怎样接入流程中心?启动条件、实例关联与失败回退
java·spring boot·mysql