一、前言
第一次学Javaweb,是看了狂神的javaweb系列课程,开始使用maven来构建maven项目,从课程中了解到maven是用来管理和导入jar包的,但对于项目结构只是停留在了解阶段,所以最近深入的学习了一下maven。
二、Maven的作用
1. 统一管理jar包,在普通的java项目中,我们需要到处去找jar包,而Maven可以非常方便的对jar包进行管理。
2. 统一项目目录结构, 在之前的项目中,配置文件到处都是,test代码也是每一个文件夹都有,而Mave则是给了项目一个统一的目录框架。
接下来我们来做一个简单的对比:
新建一个普通的java工程:
正常的操作是在src文件夹中建包写代码,各种文件放在哪里并没有一个统一的规定。
我们再新建一个Maven工程
我们可以看到,target目录放打包后的输出文件,src下的java文件夹写代码,resources文件放各种配置文件、资源文件等,webapp为web项目的根目录,一切划分非常清晰明了。
我们从上面的目录中可以看到,有一个pom.xml文件,这是Maven的核心配置文件,pom全称为Project Object Model(项目对象模型),是用来描述整个maven项目的。
首先打开pom.xml文件,内容如下:
下面我们来对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是核心配置文件