Maven通俗理解

242 阅读3分钟

一、前言

 第一次学Javaweb,是看了狂神的javaweb系列课程,开始使用maven来构建maven项目,从课程中了解到maven是用来管理和导入jar包的,但对于项目结构只是停留在了解阶段,所以最近深入的学习了一下maven。

二、Maven的作用

1. 统一管理jar包,在普通的java项目中,我们需要到处去找jar包,而Maven可以非常方便的对jar包进行管理。
2. 统一项目目录结构, 在之前的项目中,配置文件到处都是,test代码也是每一个文件夹都有,而Mave则是给了项目一个统一的目录框架。

接下来我们来做一个简单的对比: 新建一个普通的java工程: image.png

正常的操作是在src文件夹中建包写代码,各种文件放在哪里并没有一个统一的规定。

我们再新建一个Maven工程

image.png

我们可以看到,target目录放打包后的输出文件,src下的java文件夹写代码,resources文件放各种配置文件、资源文件等,webapp为web项目的根目录,一切划分非常清晰明了。

我们从上面的目录中可以看到,有一个pom.xml文件,这是Maven的核心配置文件,pom全称为Project Object Model(项目对象模型),是用来描述整个maven项目的。

首先打开pom.xml文件,内容如下:

image.png

下面我们来对pol.xml文件做一个详细的解读

1. modelVersion
该标签指定了当前Maven模型的版本号

2. groupId
根据名字可以得出,这个是公司名或者是组织名,一般由三部分组成,中间用"."隔开,第一部分为用途,比如商业就是com,教育就是cn等,第二部分就是公司名,比如“jingdong”,第三部分就是自己的项目名,比如“smbms”。

3. artifactId
该标签可以理解为Maven构建的项目名

4. version
版本号,SNAPSHOT意思是快照,说明我们的项目还在开发中,是不稳定的版本,我们需要注意的是,groupId、artifactId、version三个元素构成了一个Maven项目的基本坐标。

5. packing
项目导报的类型,比如jar、war等。

6. dependencies和dependency
前者的标签中包含后者,这两个标签就体现了maven的一个重要特征,jar包管理,一个项目会依赖很多其他的jar包,在Maven里这些依赖就被称为dependency。
Maven有本地仓库和远程仓库两个概念,本地仓库的地址在setting.xml里,Maven工程导入jar包时,会首先尝试从本地仓库中获取jar包,如果没有,则会从远程仓库里下载jar包,并放入本地仓库中。

最后解释一下Maven的目录结构:

  • main目录下是项目的主要代码,test目录存放测试相关的代码

  • 编译输出后的代码会放在target目录下

  • src/main/java目录下存放java代码,例如servlet文件等,而src/main/resources目录下则存放配置、资源文件等。

  • pom.xml是核心配置文件