maven入门与核心功能介绍

🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗

🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹

🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢

🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞

文章目录


引言

  • 今天给大家介绍一下maven和一些相关的操作,博客还是要手搓的,希望对大家有帮助.
  • 我的导图

一、什么是maven

  • Maven 就是一个Java 项目的 "大管家 + 自动下载工具"。

它到底是干嘛的?

  • 以前写 Java 项目:要用很多第三方包(比如连接数据库、操作 Excel、发请求等)
    咱们得自己去官网一个个下载 jar 包还要手动放到项目里版本不对、包冲突、少依赖,项目直接跑不起来,反正会有很多问题.
  • Maven 就在配置文件里写一句要什么包、什么版本,它就:
    自动去网上下载所有需要的 jar 包
    自动管理依赖(A 包需要 B 包,它会一起下)
    统一管理项目结构(src 放代码,target 放编译结果)
    一键编译、打包、运行、发布,不用你手动点来点去

基本架构

  • 项目配置文件:pom.xml .里面写:项目名、版本、依赖哪些 jar、用什么插件
  • 在配置好第三方文件后,maven会自动的去仓库中寻找并加载到当前项目中,如果本地仓库没有就是按照(远程仓库 ---> 中央仓库)的优先级进行下载到本地仓库.
  • 处理配置文件 ,maven还引入了声明周期与插件.我们要先知道这些生命周期是考插件驱动的,后面会详细说生命周期~

二、坐标

上面咱们说了,通过maven可以自动通过仓库下载第三方依赖,这么多第三方依赖,是怎么确定哪一个的呢?

maven不仅可以快速加载配置好第三方依赖,还可以管理项目,其中就是设计了标签,这便签就是一个gps,添加几个特征就可以定义到唯一的一个第三方依赖.

  • 坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
  • 依赖语法:
xml 复制代码
<dependencies>  <-- 依赖 !-- >
<-- 某一具体依赖 !-- >
 <dependency>
     <groupId>组织名</groupId>
     <artifactId>项目名</artifactId>
     <version>版本号</version>
 </dependency>

<-- 某一具体依赖 !-- >
 <dependency>
     <groupId>组织名</groupId>
     <artifactId>项目名</artifactId>
     <version>版本号</version>
 </dependency>


....
</dependencies>
 

三、配置依赖

配置依赖与删除依赖

上面我们介绍了依赖是通过坐标进行配置的,但是我们配置的依赖是有依赖性的,什么意思呢,打比方我配置的是一个蛋糕 ,但是蛋糕上还有草莓,巧克力...一些其他的也会跟着一起配置下来.

一般来说,这是没有啥问题的,但是想要移除应该怎么移除呢?可以通过exclusion 标签进行移除

xml 复制代码
<dependency>
    <groupId>你要引的包A</groupId>
    <artifactId>xxx</artifactId>
    <version>xxx</version>

    <!-- 排除里面的某个依赖 -->
    <exclusions>
        <exclusion>
            <groupId>要排除的包B</groupId>
            <artifactId>要排除的包B</artifactId>
            <!-- 注意:exclusion 不用写 version -->
        </exclusion>
    </exclusions>
</dependency>

四、 生命周期

啥是声明周期? 怎么可以理解成Maven 给 Java 项目定好的一套固定 "流水线"。从 "清理旧文件"→"写代码"→"编译"→"测试"→"打包"→"安装到本地"→"发布到服务器",一步接一步,按顺序走。

3套周期

重点了解:

  • clean : 移除上一次构建生成的文件 ----->
  • compile : 编译项目源代码 ----->
  • test : 使用合适的单元框架进行测试 ---->
  • package : 将编译后的文件打包 --->
  • install : 安装项目到本地仓库
    注意: 在同一个生命周期中,位于后面的操作需要依赖前面的操作,也就是也会执行前面的操作

五、单元测试

单元测试与Junit

先main方法中进行测试,当存在很多方法或者逻辑的时候其实我们是容易测试的,在maven中引入了单元测试.有啥特点呢?

  • 不启动整个项目、不连数据库、不点界面
  • 只测一个方法、一个小功能
  • 运行飞快,秒出结果:成功 / 失败

存在一款第三方依赖Junit最常用的单元测试框架,我们也是通过坐标引入

  • 依赖范围

    • 规定测试类、测试方法怎么写
    • 提供运行测试的能力
    • 提供一堆断言方法判断结果对不对

断言

其实就是junit下面的一系列的测试方法.

常用方法

java 复制代码
// 用户类
public class UserService {

    /**
     * 给定一个身份证号, 计算出该用户的年龄
     * @param idCard 身份证号
     */
    public Integer getAge(String idCard){
        if (idCard == null || idCard.length() != 18) {
            throw new IllegalArgumentException("无效的身份证号码");
        }
        String birthday = idCard.substring(6, 14);
        LocalDate parse = LocalDate.parse(birthday, DateTimeFormatter.ofPattern("yyyyMMdd"));
        return Period.between(parse, LocalDate.now()).getYears();
    }

    /**
     * 给定一个身份证号, 计算出该用户的性别
     * @param idCard 身份证号
     */
    public String getGender(String idCard){
        if (idCard == null || idCard.length() != 18) {
            throw new IllegalArgumentException("无效的身份证号码");
        }
        return Integer.parseInt(idCard.substring(16,17)) % 2 == 1 ? "男" : "女";
    }

}

下面在test包下通过断言生成测试方法

java 复制代码
   @Test
    public void testGenderWithAssert(){
        UserService userService = new UserService();
        String gender =userService.getGender("100000200001013418");

        //断言
        Assertions.assertEquals("男", gender , "性别计算错误");
    }

就是根据预测信息是不是相互适配,来返回相对性的提示信息,相比传统的还是更加模块的~

总结

这篇文章就先分享到这里了,希望对你有帮助~

  • 我是Dylan,下次见~
    -
相关推荐
yyt3630458415 分钟前
spring单例bean线程安全问题讨论
java·spring
我是大猴子25 分钟前
事务失效的几种情况以及是为什么(详解)
java·开发语言
wertyuytrewm1 小时前
Java面试——Java基础
java·jvm·面试
czlczl200209251 小时前
RAG实现思路流程
java·jvm
带娃的IT创业者1 小时前
WeClaw_40_系统监控与日志体系:多层次日志架构与Trace追踪
java·开发语言·python·架构·系统监控·日志系统·链路追踪
Y001112361 小时前
JDBC原理
java·开发语言·数据库·jdbc
程序员侠客行2 小时前
Tomcat 从陌生到熟悉
java·tomcat·web
wertyuytrewm2 小时前
Java 异常|Java Exceptions
java·开发语言
ProgramHelpOa2 小时前
Amazon SDE Intern OA 2026 最新复盘|70分钟两题 Medium-Hard
java·前端·javascript
雪碧聊技术2 小时前
深入理解 Java GC:从“房间清洁工”到解决系统卡顿实战
java·开发语言