作为 Apache 组织中的一个颇为成功的开源项目, Maven 主要服务于基于 java 平台的项目构建, 依赖管理和项目信息管理。 无论是小型的开源类库项目, 还是大型的企业级应用; 无论是传统的瀑布式开发, 还是流行的敏捷开发, Maven 都能大显身手。Maven有依赖管理、模块管理、插件管理和部署管理四大核心功能。
1.依赖管理
例子:依赖service
<dependencies>
<dependency>
<groupId>com.shsxt</groupId>
<artifactId>wc-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
平常需要的库;在这里找:http://mvnrepository.com/
然后复制到pom.xml文件中,记得写在project便签和dependencies中,保存就依赖了
groupId:项目隶属的实际项目-公司名称 artifactId:模块-项目名 version:项目当前所处的版本
2.模块管理
在 Maven 中需要定义一个 parent POM 作为一组 module 的聚合 POM。在该 POM 中可以使用 标签来定义一组子模块。 parent POM 不会有什么实际构建产出。 而 parent POM 中的 build 配置以及依赖配置都会自动继承给子 module。
例如子模块的pom.xml配置如下:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hbgc</groupId>
<artifactId>base</artifactId>
<version>1.0-SNAPSHOT</version>
<!--父模块的pom.xml位置-->
<relativePath>../base/pom.xml</relativePath>
</parent>
<groupId>com.hbgc</groupId>
<artifactId>springbootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootdemo</name>
<description>Demo project for Spring Boot</description>
3.插件管理
添加插件,类似于添加依赖, 通过 GAV 来指定插件, 其中对于maven官方插件, 可以省略 GroupId。例如:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>
与控制依赖版本类似, 可以通过引用属性和 pluginManagement 对项目中的插件版本进行统一管理。注意 pluginManagement 元素需要放在 build 元素之下。
例如:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
4.部署管理
在idea中,我们可以打开maven project视图。在maven的生命周期列表中进行测试、打包和安装。

5.生命周期
Maven的生命周期:
maven的生命周期是抽象的,它本身并不做任何的工作。实际的工作都交由"插件"来完成。
maven的每个构建步骤都可以绑定一个或多个插件行为,而且maven为大多数的构建步骤编写并绑定了默认插件。
三套生命周期:clean、default、site
Maven的生命周期的各个阶段是前后阶段相互依赖的,当用户调用clean的时候,pre-clean 和 clean阶段会顺序执行,不会碰触default的任何阶段。