什么是生命周期?
生命周期,说白了,就是从出生到挂掉中间的一些列过程。相信做过web开发的人对servlet的生命周期不陌生。同理,人的这一生,生命周期基本可以分为呱呱落地、幼儿园、小学初中高中大学、工作、退休,到最后挂在墙上。
maven的生命周期
人的生命周期对人的一生抽象,同样,maven的生命周期对构建的过程进行了抽象和统一。Maven的生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等。
maven抽象了三套生命周期,可以理解为将项目的构建过程分了一个类,每一类都是一个小的生命周期
maven抽象了三套生命周期,clean、default、site,每套生命周期包含多个任务,一个任务成为一个阶段。
clean:项目清理
default:包含一系列关键的构建动作
site:项目站点报告相关
我们要执行某个构建任务,可以使用这些生命周期阶段,比如,在命令行中,执行mvn clean,对应的就是clean生命周期的clean阶段,mvn install对应的就是default生命周期的install阶段,同理,在IDE中运行maven命令也是一样。
生命周期之间相互独立,生命周期阶段有顺序,后面的阶段依赖前面的阶段
生命周期之间相互独立,是说不同生命周期之间没有关联,比如执行clean生命周期的clean阶段,不会影响default生命周期的阶段;而同一套生命周期内部,生命周期阶段之间是有顺序的,上图列出了重要生命周期的顺序,从上到下,比如,在执行mvn install是,在default生命周期中,位于install之前的阶段都会依次执行,maven内部会先执行validate、...compile...,一直到install为止。
不同生命周期的阶段可以组合使用,如在测试或安装前,一般需要先清理上次构建的输出,那么可以组合clean和test或package,如mvn clean test,maven会先执行clean生命周期的相应阶段、default生命周期的从头到test阶段的所有阶段。
插件
插件的概念大家都不陌生,比如,eclipse就有众多的插件,需要什么功能,添加相应的插件就可以。maven也是基于插件的机制实现的。其实,之前讲述的生命周期的不同阶段完成的任务,都是通过相应的插件来完成的,生命周期本身不能工作,具体的任务由相应的插件完成。
一个插件会提供多个功能,一个功能就是一个目标(goal)。
我们会发现,在安装完maven后,我们基本没做什么,就已经能通过mvn clean、mvn test、mvn install这行命令执行相应的构建任务了,我们又说过,这些任务是由相应的插件完成的,但是,这些插件我们并没有配置,那怎么会工作呢?这是因为maven默认已经内置了常用插件的配置,这又是maven约定大于配置的体现。maven内置的常用插件如下:
上图中间一列列出了插件及对应的目标,一个插件可能会有多个目标,每个目标完成相应的任务,比如,我们在编译项目时,编译任务是由maven-compile-plugin完成的,它有两个目标,compile和testCompile,分别用于编译主代码和测试代码。
前面提到过,生命周期本身是抽象的,就好比接口一样,本身不能工作,但是为什么我们执行说过,我们执行生命周期的相应阶段,比如mvn clean install,clean和install分别是clean生命周期和default生命周期的阶段,他们是生命周期,是抽象的,应该不能工作才对,为什么这边输入生命周期阶段maven却能做相应的事呢?这是因为maven默认已经将这些生命周期阶段与相应的插件目标绑定了,上图第一列就是相应的生命周期阶段,第二列是相应的生命周期阶段对应的插件目标,因此,我们在输入生命周期阶段时,maven会找对应的插件的目标执行,因此,在命令行输入mvn clean和mvn maven-clean-plugin:clean效果是一样的。
maven默认已经内置了常用的插件,用于完成基本的构建任务,但是这些插件还远远不够的,maven提供了大量的插件供我们使用,我们可以在pom文件中配置相应的插件:
在pom的<build>配置元素的子元素<plugins>下配置插件
一个plugin元素代表一个插件,插件也是同过GAV标志,execution代表一个绑定,将生命周期的阶段与插件的一个目标绑定,这样,在命令行输入生命周期阶段时,就会执行对应的插件的目标,完成相应的任务。
插件仓库
同构件仓库一样,我们在第五章中介绍了仓库的配置,那只对普通的jar包有效,插件有独立的仓库,配置方式同jar包的仓库类似
只不过配置元素变位pluginRepository
maven提供了很多插件,可以在maven官网上查看,地址如下
http://maven.apache.org/plugins/index.html
到目前为止,我们理解了那些maven命令背后的含义,我们可以使用生命周期阶段来执行相应的构建任务,但是这些生命周期本省是不能工作的,maven将这些生命周期阶段绑定到了相应的插件的目标,执行这些生命周期阶段时,背后其实执行的是相应插件的目标,来完成相应的任务。
相关推荐
Maven 的核心目标是通过提供一致性和自动化的方式来简化整个开发过程,它能够处理构建生命周期、依赖关系、构建配置以及生成报告等任务。 Maven 的主要功能包括: 1. **依赖管理**:Maven 使用中央仓库,存储了...
Maven的核心概念是项目对象模型(Project Object Model,POM),它是一个XML文件,描述了项目的配置信息,包括项目依赖、构建目标、插件配置等。通过POM,Maven能够自动化处理构建过程,如编译源代码、运行测试、...
1. **构建生命周期**: Maven 的生命周期包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(install)、部署(deploy)等阶段。 2. **构建命令**: 使用 `mvn clean ...
Maven的核心概念包括项目对象模型(POM)、依赖管理和插件。POM是一个XML文件,描述了项目的基本信息、构建配置和依赖关系。Maven通过解析POM来执行构建任务,自动解决和下载项目所需的依赖。依赖管理则允许开发者...
Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过依赖管理和项目生命周期的概念,帮助开发者构建、管理和部署Java项目。在这个"apache-maven-3.6.0"压缩包中,包含了完整的Maven 3.6.0版本的...
#### 第六章 Maven 和 Idea 的集成设置 为了更好地集成 Maven 和 IDEA,需要在 IDEA 中进行一些设置。这包括指定 Maven 安装路径、配置全局和项目级别的设置等。此外,还可以启用自动导入依赖、优化构建过程等功能...
- 生命周期:Maven 有三个主要的生命周期阶段:clean、default和site。clean用于清理项目,default用于构建项目(包括编译、测试、打包等),site用于生成项目站点文档。 2. Maven的构建过程: - 编译:Maven ...
3. **Maven生命周期**:Maven有三个主要的生命周期阶段:clean(清理)、default(构建)和site(站点)。每个阶段包含多个阶段,例如default生命周期中的compile(编译)、test(测试)、package(打包)等。 4. *...
3. **构建生命周期**:Maven具有预定义的构建生命周期,包括clean、default和site三个阶段。default阶段包含了编译、测试、打包、验证等关键步骤。 4. **插件系统**:Maven通过插件执行特定任务,如编译Java代码、...
- **生命周期**:Maven有三个主要的生命周期阶段:clean(清理)、default(构建)和site(站点生成)。每个阶段包含多个阶段(或称为goals),如compile(编译)、install(安装)和deploy(部署)。 2. **Maven ...
### Maven的核心概念 1. **POM(Project Object Model)**:Maven的中心概念是POM,它是一个XML文件,包含了项目的基本信息、构建指令、依赖关系和其他配置。POM定义了项目的结构、构建过程和项目间的依赖关系。 2...
1. **Maven的核心概念**: - **POM (Project Object Model)**:Maven项目的基本配置文件,通常命名为pom.xml。它包含了项目信息、构建指令、依赖关系、插件配置等,使得Maven能理解并管理项目。 - **坐标...
Maven的生命周期和构建阶段(如clean、compile、test、package、install和deploy)使得构建过程标准化,提高了开发效率。 尽管Maven 2.0.9在今天看来可能有些过时,但对于理解Maven的基本工作原理和历史发展来说,...
6. **boot**:这个目录包含了Maven的内嵌Tomcat服务器,用于启动插件生命周期,特别是当需要在生命周期中运行Web应用时。 7. **lib**:这个目录包含了Maven运行所需的所有依赖库,包括Maven的核心库和其他必需的JAR...
**生命周期(Lifecycle)**:Maven 提供了一套预定义的构建生命周期,包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(integration-test)、部署(install)和站点...
通过这个项目,开发者可以理解 Maven 的项目对象模型(Project Object Model, POM)、依赖管理和构建生命周期等核心概念。 【标签】"Java" 指出这个项目是使用 Java 编程语言编写的。Java 是一种广泛使用的面向对象...
- **构建生命周期**:Maven具有预定义的构建生命周期,包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(install)和部署(deploy)等阶段,简化了构建过程。...