项目管理利器-Maven仓库及Maven常用命令讲解

本篇文章主要内容:
仓库
Maven的生命周期
Maven的常用命令
练习maven 命令
仓库的概念
现在我们对maven工程有一个大概的认识了,那现在思考一个问题, maven怎么就这么神奇,我们写完的工程交给他之后,他就能够自动帮我们管理,我们依赖的jar包它从哪儿获取呢?
有同学说已经安装了,在它的安装包里啊,大家可以看一下maven下载下来才8M,我们需要的jar包有时候都几百兆甚至几个G,它从哪儿弄去呢?其实,maven有仓库的概念。
在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven核心程序仅仅定义了自动化构建项目的生命周期,但具体的构建工作是由特定的构件完成的。而且为了提高构建的效率和构件复用,maven把所有的构件统一存储在某一个位置,这个位置就叫做仓库。
仓库存什么?
仓库是存放东西的,Maven 仓库的是:
1. Maven 的插件,插件也是一些jar,这些 jar 可以完成一定的功能。
2.我们自己开发项目的模块
3. 第三方框架或工具的 jar 包
仓库的类别
根据仓库存储的位置,把仓库分为本地仓库和远程仓库。
本地仓库:
存在于当前电脑上,默认存放在~\.m2\repository中,为本机上所有的Maven工程服务。你也可以通过Maven的配置文件Maven_home/conf/settings.xml中修改本地仓库所在的目录。~ 是用户的主目录,windows系统中是 c:/user/登录系统的用户名
远程仓库:
分为为全世界范围内的开发人员提供服务的中央仓库、为全世界范围内某些特定的用户提供服务的中央仓库镜像、为本公司提供服务自己架设的私服。中央仓库是maven默认的远程仓库,其地址是:http://repo.maven.apache.org/maven2/
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载得到。
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载, 缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。
分类说明:
1) 本地仓库:本机当前电脑上的资源存储位置,为本机上所有 Maven工程提供服务
2) 远程仓库:不在本机上, 通过网络才能使用。多电脑共享使用的。
①:中央仓库:通过Internet访问,为全世界所有 Maven工程服务。 最权威的。
②:中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器。
③:私服:在局域网环境中部署的服务器,为当前局域网范围内的所有 Maven工程服务。公司中常常使用这种方式。

Maven 对仓库的使用
在Maven 构建项目的过程中如果需要某些插件,首先会到Maven 的本地仓库中查找,如果找到则可以直接使用;如果找不到,它会自动连接外网,到远程中央仓库中查找;如果远程仓库中能找到,则先把所需要的插件下载到本地仓库,然后再使用,并且下次再用到相同的插件也可以直接使用本地仓库的;如果没有外网或者远程仓库中也找不到,则构建失败。
资源搜索地址:https://mvnrepository.com/
Maven 的生命周期
对项目的构建是建立在生命周期模型上的,它明确定义项目生命周期各个阶段,并且对于每一个阶段提供相对应的命令,对开发者而言仅仅需要掌握一小堆的命令就可以完成项目各个阶段的构建工作。
构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成。不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。
对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven 都会自动构建。这也就是Maven 这种自动化构建工具给我们带来的好处。
Maven 的常用命令
Maven 对所有的功能都提供相对应的命令,要想知道maven 都有哪些命令,那要看maven 有哪些功能。
一开始就跟大家说了,maven 三大功能:管理依赖、构建项目、管理项目信息。
管理依赖,只需要声明就可以自动到仓库下载;管理项目信息其实就是生成一个站点文档,一个命令就可以解决,最后再说;那maven 功能的主体其实就是项目构建。
Maven 提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对每一个阶段提供相应的命令,程序员只需要掌握一小堆命令,就可以完成项目的构建过程。
mvn clean清理(会删除原来编译和测试的目录,即target 目录,但是已经install 到仓库里的包不会删除)
mvn compile 编译主程序(会在当前目录下生成一个target,里边存放编译主程序之后生成的字节码文件)
mvn test-compile编译测试程序(会在当前目录下生成一个target,里边存放编译测试程序之后生成的字节码文件)
mvn test 测试(会生成一个目录surefire-reports,保存测试结果) mvn package
打包主程序(会编译、编译测试、测试、并且按照pom.xml 配置把主程序打包生成jar 包或者 war 包)
mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到 web 容器中)。
注意:执行以上命令必须在命令行进入pom.xml 所在目录!
练习maven 命令
以第一个maven 项目为例,进入到Hello 目录中执行maven 各种命令。
1. 准备工作,pom.xml 添加依赖
<dependencies>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
2. 在Hello/src/test/目录下创建 java , resources 目录
3. 在Hello/src/test/java 目录下,创建 com/bjpowernode/目录
4. 在 com/bjpowernode/目录中创建 MyTest.java 文件导入类:
import org.junit.Assert; import org.junit.Test;
定义方法
public class MyTest { @Test
public void testAddNumber(){
System.out.println("执行HelloMaven 类addNumber()方法"); int n1 = 10;
int n2 = 20; int res = 0;
HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2);
// 期望值,实际值Assert.assertEquals(30,res);
}
}
5. 执行先执行 mvn compile ,观察目录结构的变化,生成target 目录6.在执行 mvn clean, 观察taget 目录被清除
7. 执行 mvn compile
8. 进入 taget/classes 目录执行 java com.bjpowernode.HelloMaven
9. 进入Hello 目录,执行mvn test-compile 生成test-target 测试编译后的目录
10. 进入Hello 目录,执行mvn test 执行 MyTest 类中方法,生成测试报告11.进入目录 surefire-reports,查看测试报告
12. 修改 MyTest.java, 增加测试方法@Test
public void testAddNumber2(){
System.out.println("执行HelloMaven 类addNumber()方法"); int n1 = 20;
int n2 = 30;
int res = 0;
HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2);
// 期望值,实际值Assert.assertEquals(60,res);
}
13. 进入Hello 目录,执行mvn test-compile
14. 进入Hello 目录,执行mvn test
15. 修改testAddNumber2()方法中 60 为 50
16. 进入Hello 目录,执行mvn package ,生成 xxx.jar 文件,这就是所说的打包
17. 进入Hello 目录,执行mvn install , 把xxx.jar 文件安装到本地maven 仓库,安装成功后查看仓库中的jar 文件
最后奉上视频教程👇,视频观看效果更佳!!走过路过别忘素质三连哦~~

