Maven初级二:Maven仓库和常用命令


一、maven仓库

maven仓库分三类:本地仓库、远程仓库私服、中央仓库,下面通过这张图(图片来源于网上,哈哈)仔细分析三个仓库在maven项目中的使用。
在这里插入图片描述
本地仓库:我们知道maven工程中并没有放置项目所需的jar包,只存有jar包的坐标,当我们启动maven项目时,会通过本地jar包的坐标去本地仓库(在系统盘里)寻找需要用到的jar包,那我们本地仓库在什么地方呢?
在这里插入图片描述
然后看下图,在我们的系统盘用户目录下会创建repository文件作为我么你的本地仓库,那我来找找在哪里。
在这里插入图片描述
看,这是我电脑默认的本地仓库
在这里插入图片描述
中央仓库:当我们所需要的jar包在本地仓库找不到的时候,本地仓库会直接去中央仓库下载,根据maven工程中的jar包坐标去下载,当然前提是电脑联网了哦。中央仓库中放置了现有的几乎所有的开源jar包。

私服仓库:比如公司开发项目,为了方便在不联网的情况下下载jar包,且有一个统一的地方放置项目所需的jar包,会创建一个远程仓库(或者叫私服 ),通过同一个局域网就可以下载jar包,如果远程仓库没有也是需要在中央仓库去下载的,还有就是远程仓库中的jar包也可以是从本地仓库中上传上去的。

现在要考虑一个问题:就是本地仓库的位置是在系统盘,系统盘的资源是非常宝贵的,如果以后所有的jar包都存储到系统盘怎么办?另外默认的本地仓库的路径也很难找。所以我现在可以重新指定一个本地仓库到其它盘,然后在这个指定的本地仓库存放一些常用的jar包。

这里给大家提供一个本地仓库,里面有一些常用的jar包,开发一些项目足够啦:

链接: https://pan.baidu.com/s/1RQ8emlaZHjbGF74Us0Uihg
提取码:2164

下面是我自己配置的本地仓库:
在这里插入图片描述
然后我们还是需要在conf中的settings.xml文件中配置它:
在这里插入图片描述
然后你的本地仓库就配置完啦


二、maven的标准目录结构

一个项目的开发肯定有自己的目录结构,但是每个人习惯不同为文件命名的方式也是不一样的,所以maven提供了一个统一的标准目录结构(这里是maven的java工程):
src/main/java目录:核心代码部分

src/main/resources目录:配置文件部分

src/test/jave目录:测试代码部分

src/test/resources目录:测试配置文件

如果是maven web工程还会有一个:src/main/webapp目录:页面资源,包含:js、css、图片等


三、Maven 常用命令

命令功能
mvn compile将 src/main/java 下的文件编译为 class 文件输出到 target目录下
mvn cleanclean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容
mvn testtest 是 maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类
mvn packagepackage是maven 工程的打包命令,对于java工程执行package打成jar包,对于web工程成war包
mvn installinstall是maven工程的安装命令,执行install将mave打成jar包或war包发布到本地仓库

下面我们通过一个小案例来测试一下这几个命令,方便理解吧,案例这里提供给大家:

链接:https://pan.baidu.com/s/14gc04KoM95uXePBGjLTN_g
提取码:2165

下载解压后是这么个东东:
在这里插入图片描述

打开之后里面是这样的哦:
在这里插入图片描述

3.1 mvn compile

命令测试在项目中打开dos界面:
在这里插入图片描述

在这里插入图片描述
然后你会发现项目中多了一个target文件夹:
在这里插入图片描述
打开target文件夹,里面是这样子的(下图),里面有一个classes文件夹,我们一直点进去,里面会有一个.class文件,我们都应该知道java文件经过编译后就变成了class文件,可见mvn compile命令将src/main下面的java代码进行了编译放在target目录下。
在这里插入图片描述

3.2 mvn clean

先运行一下,看会有什么结果:
在这里插入图片描述
来看看项目文件夹中发生了什么?
在这里插入图片描述
分析:clean命令就是将我们编译好的项目信息删除掉,为什么要这么做呢?比如在公司中你接手了一个别人的项目,那项目中肯定包括了很多在上一个人的本地环境中编译的项目信息,你现在在你自己的环境中运行编译肯定就要删除别人的编译信息,因为每个人的开发环境都是有区别的,在别人那里能编译的代码在我这里不一定能够运行的通。

3.3 mvn test

还是先来运行一下吧:
在这里插入图片描述
我们直接打开target文件夹(肯定会有小伙伴有疑问:上面执行clean命令不是将target删除了吗?为什么这里还有target文件夹,这个问题等下回答):
在这里插入图片描述
这里关注test-classes这个文件夹就可以啦,一直双击进去会有一个test文件夹里面有一个.class:

在这里插入图片描述在这里插入图片描述
分析:mvn test命令会将src\test下的java文件进行编译,也就是测试类中的代码。细心的小伙伴可以发现,mvn test命令不止编译了src\test下面的代码,同时也编译了src\main下面的代码,因为上面通过mvn test命令又生成的target文件夹中包含有classes文件。

3.4 mvn package

为了方便更能看到效果,我们先执行mvn clean命令删除target文件夹,然后再执行mvn package命令,然后看看效果:
在这里插入图片描述
执行完package命令之后,target文件会重新生成的,来打开target目录,会看到compile和test命令编译的java文件都有
在这里插入图片描述
分析:为什么会生成这个war包呢?看下图说明:
在这里插入图片描述

3.5 mvn install命令

还是先删除target文件夹,再执行mvn install命令,再打开生成的target文件夹:
在这里插入图片描述
在这里插入图片描述
有没有发现,这个命令执行后做了上面几个命令所做的所有事情,包括执行compile命令编译生成的classes文件夹,test命令生成的test-classes文件夹,还有打包war格式文件,最后还做了一个工作就是将项目放到了本地仓库(自己配置的maven_repository,上面我分享的),我们可以在本地仓库去找一找:
在这里插入图片描述


总结

上面测试部分留下了一个问题,来解答一下,一个项目的开发过程包括:编译,测试,打包,安装,发布。比如我们在测试阶段肯定是要经过编译之后的,如果是在打包阶段那肯定是经过前两个阶段编译和测试的,所以这就是为什么执行后面的test前面的聪明compile所做的工作也能完成了…依次类推。

好啦,到这里,maven仓库和常用命令算是记录完毕,大家一起学习哈,希望可以帮助到你们。

不足之处还往指正,虚心求教!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值