Maven入门介绍
What is Maven?
Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。
         
      
Maven介绍
在Java项目开发中,我们常常需要引入一些依赖包,通常都要把jar包放入classpath下。
其次,我们要确定项目的目录结构。比如,src目录存放Java源码,resource目录存放配置文件,bin目录存放编译生成的.class文件。
此外,我们还需要配置环境,比如JDK版本等一系列的配置问题。
这个时候,前辈们就开发出了Maven,专门为Java项目打造的管理和构建工具。
Maven项目结构
         
      
项目的根目录a-maven-project是项目名,
它有一个项目描述文件pom.xml,
存放Java源码的目录是src/main/java,
存放资源文件的目录是src/main/resources,
存放测试源码的目录是src/test/java,
存放测试资源的目录是src/test/resources。
最后,所有编译、打包生成的文件都放在target目录里。这些就是一个Maven项目的标准目录结构。
Pom
**Pom是指项目对象模型(Project Object Model),是Maven工作的基础。**在执行task或者goal时,Maven会去项目根目录下读取pom.xml获得需要的配置信息。
pom.xml文件如下:
| 1 | <project ...>// 类似于Java的包名 | 
依赖管理
Maven定义了几种依赖关系,分别是compile、test、runtime和provided:
         
      
其中,默认的compile是最常用的,Maven会把这种类型的依赖直接放入classpath。
命令行编译
在命令中,进入到pom.xml所在目录,输入以下命令:
| 1 | $ mvn clean package | 
即可在target目录下获得编译后自动打包的jar。
镜像加速
中国区用户可以使用阿里云提供的Maven镜像仓库。使用Maven镜像仓库需要一个配置,在用户主目录下进入.m2目录,创建一个settings.xml配置文件,内容如下:
| 1 | <settings> | 
构建流程
Build LifeCycle
Build LifeCycle是指一个项目build的过程。Maven的 Build LifeCycle 分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们都包含不同的 lifecycle。
Build LifeCycle 是由 phases 构成的,下面重点介绍 default Build LifeCycle 几个重要的 phase:
| 1 | validate 验证项目是否正确以及必须的信息是否可用 | 
Goal
Goal代表一个特定任务。
其实我们类比一下就明白了:
- lifecycle 相当于 Java 的 package,它包含一个或多个 phase;
- phase 相当于 Java 的 class,它包含一个或多个 goal;
- goal 相当于 class 的 method,它其实才是真正干活的。
常用命令
mvn clean:清理所有生成的class和jar;
mvn clean compile:先清理,再执行到compile;
mvn clean test:先清理,再执行到test,因为执行test前必须执行compile,所以这里不必指定compile;
mvn clean package:先清理,再执行到package。