为什么使用Maven?
Maven有两个核心功能,项目构建,依赖管理。这两个就是Maven的核心。除此之外,Maven还有对项目结构做出了规范,统一开发!
项目构建:
项目在编码完成后,对项目进行编译、测试、打包、部署等一系列的操作都通过 Maven来实现。
依赖管理:
- 通过仓库的方式把包都集中放置在仓库里面,不用再把jar包放置在项目里面了,减少了项目的体积。
- 通过配置的方式把jar包从仓库引入到项目里面,但是并不是你想象的那样需要配置所有的jar包,之所以叫做依赖管理,也是因为只需要配置核心的jar包,依赖的jar包Maven会在仓库里面找到再帮你自动导入。
- 仓库分为三种:本地仓库、私服、中央仓库。
- 如果你在项目里面配置的jar包,在本地服务器没有,那么就会到私服或者中央仓库里面查找,并且下载到本地仓库再引用到Maven项目里面。私服和中央仓库是需要你自己配置的,所以没配置就没有用。
本地仓库:位于程序员的电脑里面。通常项目依赖的jar包都会从另外两个仓库下载到本地才能被项目引用。
私服:公司或者开发小组维护的一个私人服务器。里面存储着需要的jar包。如私人封装的商业jar包。
中央仓库:一般是一些专业的组织维护着全世界的开源jar包。(通常是很多很多TB或者PB,这种数量级别的。)
总结:依赖管理帮你减少了项目的总体积,只需要在项目的xml里面配置要依赖的jar包就能够引入jar包到项目里面。也就是说以后我们再也不用到处找需要的jar包了,我们需要jar包时,要做的只是在项目的xml里面配置,并且只需要配置核心的jar包。当然你还要想如果本地仓库里面没有jar包时,该怎么办对吧,所以通常我们还会配置私服仓库或者中央仓库。
寻找jar包的顺序是:本地仓库->私服->中央仓库。
但是私服和中央仓库必须是你配置了才这样查找,如果没有配置私服或者中央仓库,那么就会是这种顺序:本地仓库->默认中央仓库(默认中央仓库需要翻墙,否则下载不了)。
jar包的坐标
很重要的概念,这就是为什么我们在xml里面配置就能够找到需要的jar包。
要找到一个jar包就需要一个坐标。坐标组成为:【公司网站的倒序】+【项目名称】+【项目版本号】
那么用什么来表达着三个东西呢??
groupId:公司网站倒序或者公司名称+总项目名称
artifactId:总项目名称或者子项目名称
version:项目版本号
通常我们在项目的xml里面配置需要的jar包时是这么配置的:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId><!-- 公司网站倒序 -->
<artifactId>spring-beans</artifactId><!-- 子项目名称 -->
<version>5.0.0.M5</version><!-- 版本号 -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId><!-- 公司网站倒序+总项目名称 -->
<artifactId>struts2-core</artifactId><!-- 子项目名称 -->
<version>2.5.10.1</version><!-- 版本号 -->
</dependency>
<dependency>
<groupId>cn.domarvel</groupId><!-- 公司网站倒序 -->
<artifactId>blogforyouprx</artifactId><!-- 总项目名称 -->
<version>1.0-SNAPSHOT</version><!-- 版本号,SNAPSHOT表示还处于开发中,不稳定版 -->
</dependency>
再来看张图:
配置仓库:
配置本地仓库
到conf里面找到settings.xml
找到<localRepository>
配置如:<localRepository>绝对路径</localRepository>
配置中央仓库
害怕你不知道,要一个一个的打,我还是贴出来吧。
<mirrors>
<!-- <mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror> -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<!--<mirrorOf>central</mirrorOf> -->
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
把本地仓库配置好,中央仓库配置好后,我们就可以开始新建Maven项目了。
本地仓库就是一个空文件夹,就是因为是空文件夹,所以我们需要配置中央仓库。
Maven对项目结构的规范:
比如我通过Maven创建一个JavaWeb项目:
环境:Eclipse(和IDEA一样的,没什么太大的区别)
一步一步来:
在Eclipse中配置好Maven,我们才可以新建项目。
好了,到了这里我们就可以正式创建项目了:
在Eclipse中,我们一般勾选上,以跳过通过快速原型构建项目。在IDEA中要选择快速原型构建。
快速原型按照下面的规则选:
在Eclipse中,我们不需要快速原型构建,所以我们勾上。否则会出现很大块的项目目录都不完整。
报错原因是缺少web.xml文件,因为我们是创建的JavaWeb项目。
添加web.xml可以手动创建也可以:
创建后的目录:
认识Maven的规范目录结构
可以看到,Maven对项目的结构进行了规范,细分了什么目录放什么文件。