maven简介
maven是什么?有什么用?
maven 解决的问题:
- - jar包的声明式依赖管理与管理
- - 自动构建、发布项目
- - 软件构建的生命周期: 清除--> 编译-->测试-->报告-->打包(jar\war)-->安装-->部署到远程
管理jar包:
我们在开发项目的时候,甚至是写一个小的java程序的时候,会用到各种各样的jiar包,有些jar包根本没有听过,就需要上网去查找,但是一定保证下载的jar包就是对的吗?在实际开发项目中,公司的很多人都在完成这个项目,同样一个类似的功能,需要用jar包,他用了这个版本,他用了那个版本,各个版本的jar可能只有一些微小的差别,也可能影响到整个项目的运行。还有就是项目在测试的时候,知道你用到了这个jar包,但是具体是哪个版本就不知道了,在测试中会遇到很多的问题。maven会帮我们构建一个仓库,这个仓库存的是什么呢?就是在项目中需要用到的jar包。
在我们安装maven的时候,需要配置Maven的仓库,在网上下载的压缩包解压之后,在根目录下的conf文件夹中有一个setting.xml配置文件,其中有一条注释告诉我们需要指定一个本地的仓库(根据网上的安装教程和配置,其实很简单,注意maven是java编写的,需要java环境的支持,电脑中必须安装jdk才可以使用)我们需要新建一个本地仓库,在配置文件中指定这个本地仓库即可。
每个开发人员的电脑都会有一个仓库,但是有很多的开发人员,每个开发人员都有一台电脑,怎么做到这些开发人员仓库中用到的jar包做到统一呢,我们在公司的服务器上创建一个仓库,Maven可以帮我们管理这个仓库,公司的开发人员发现需要jar包了,maven就会去公司的这个仓库中把需要的jar包下载到自己的仓库中,但是公司的这个仓库中也没有这个jar包的时候,就要用到中心仓库,这个中心仓库是面向全世界的,每个人都可以到这个中心仓库中去寻找所需要的jar包,放到自己的仓库中。简单点说,如果发现没有所需要的jar包,就会根据去下载,放到本地。
在构建一个maven项目的时候,我们没有手工的去下载任何jar文件,这一切都是因为maven中央仓库的存在,当maven在本地仓库找不到需要的 jar文件时,它会查找远程仓库,而一个原始的Maven安装就自带了一个远程仓库——maven中央仓库。在maven的根目录下的lib包中找到maven-model-builder-3.5.0.jar这个jar包,解压打开进入到\org\apache\maven\model中有一个pom-4.0.0.xml配置文件中,打开看到里面的中心仓库的配置。其实maven的中心仓库是:https://repo.maven.apache.org/maven2/
根据什么去中心仓库寻找所需要的jar包呢?这就要用到坐标的概念,我们在用maven的时候,在配置文件中需要说明jar包名字,版本号,这些信息组成了区别jar包的信息,maven就可以根据这些信息构建出一个坐标,到中心仓库中找到。我们在图书馆找书的时候,也是根据书的分类,一步一步找到。
maven通过坐标的概念来唯一标识jar包或者war包, 坐标的组成: groupId + artifactId+ version
- groupId:组id ,机构名,公司名:好比公司的id
- artifactId:构建物id ,产品名或者产品的id
- version :版本号
通过这些信息的组合可以找到唯一的一个jar包
规范代码结构:
maven还可以规范我们的代码结构,maven规定我们书写的java代码放在哪级,什么文件夹下,输出的class文件放在哪里,这样我们在使用Maven的时候,我们就必须遵守这些规范,否则maven是不会帮我们的,间接地规定了代码的存放结构。Maven还可以帮我们打包,发布项目。
- src
---main
---java
---包和类
---resources
---test
---java
---resources
- target : 该文件夹可有可无,是编译src后的输出文件的目录,没有则自动创建
- pom.xml : (project ojbect model):项目对象模型 ,它是maven核心配置文件,我们需要的jar包及具体的版本都在这里配置
管理项目:
maven其实在项目的管理上提供了很大的方便,从编译,测试,打包,部署,清除上都可以用一个命令来实现。
- mvn clean :清除
- mvn compile :编译
- mvn package :打包
- mvn clean install : 安装到本地仓库
- mvn deploy :部署 ,部署到私服 (局域网或者是外网)