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
。