一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin。用户也可自行配置或编写插件。
1 . 三套生命周期
Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。
1 . 1 clean生命周期
- pre-clean :执行清理前的工作;
- clean :清理上一次构建生成的所有文件;
- post-clean :执行清理后的工作
1 . 2 default生命周期
default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。
- validate
- initialize
- generate-sources
- process-sources
- generate-resources
- process-resources :复制和处理资源文件到target目录,准备打包;
- compile :编译项目的源代码;
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources
- test-compile :编译测试源代码;
- process-test-classes
- test :运行测试代码;
- prepare-package
- package :打包成jar或者war或者其他格式的分发包;
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install :将打好的包安装到本地仓库,供其他项目使用;
- deploy :将打好的包安装到远程仓库,供其他项目使用;
1 . 3 site生命周期
- pre-site
- site :生成项目的站点文档;
- post-site
- site-deploy :发布生成的站点文档
2 . Maven的插件
Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件:
Maven官网上有更详细的官方插件列表:
2 . 1 插件的目标(Plugin Goals)
一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。如执行mvn install命令时,调用的插件和执行的插件目标如下:
每个插件都有哪些个目标,官方文档有更详细的说明:Maven Plugins
3 . 将插件绑定到生命周期
Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译:
3 . 1 内置的绑定
Maven对一些生命周期的阶段(phase)默认绑定了插件目标,因为不同的项目有jar、war、pom等不同的打包方式,因此对应的有不同的绑定关系,其中针对default生命周期的jar包打包方式的绑定关系如下:
第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。Plugin Prefix
3 . 2 自定义绑定
用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包,生成如:ehcache-core-2.5.0-sources.jar形式的源码包。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>attach-source</id> <phase>package</phase><!-- 要绑定到的生命周期的阶段 --> <goals> <goal>jar-no-fork</goal><!-- 要绑定的插件的目标 --> </goals> </execution> </executions> </plugin> </plugins> …… </build>
4 . 配置插件
Maven插件高度易扩展,可以方便的进行自定义配置。如:配置maven-compiler-plugin插件编译源代码的JDK版本为1.7:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
也可以对插件的各个目标进行更具体的配置。Configuring Plug-ins
5 . 插件仓库
跟其他构件一样,插件也是根据坐标存储在Maven仓库中。超级POM中Maven配置的默认插件远程仓库如下:
<pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
相关推荐
【Maven入门指南】 Maven是一个广泛应用于Java项目的强大构建工具,它自动化处理软件构建的多个环节,包括源码编译、文档生成、JAR包创建、依赖管理和部署。Maven的核心理念是通过项目对象模型(Project Object ...
Maven的核心架构包括仓库系统、生命周期、插件和依赖管理等组件。 2. **POM**:POM是Maven中的核心概念,它定义了项目的元数据,包括项目的基本信息(如groupId、artifactId、version),依赖关系,构建配置,插件...
### Maven 入门指南知识点详解 #### 一、Maven 的基本概念 Maven 是一款强大的项目管理和构建工具,它的核心理念是通过标准化项目构建流程,实现自动化构建和依赖管理,进而提高软件项目的可维护性和生产力。Maven...
** Maven 2.0.9 入门指南 ** Maven 是一个强大的项目管理工具,主要应用于Java项目构建、依赖管理和项目信息管理。Maven 2.0.9 是该工具的一个版本,虽然现在已经有了更高级的版本,但对于初学者来说,它仍然是一个...
Maven的核心功能包括依赖管理、构建生命周期和项目信息管理,这些功能共同构成了Maven强大的项目构建和管理框架。 #### Maven与Ant的比较 Maven与Ant是两种常见的构建工具,但它们之间存在显著差异。Ant采用了XML...
** Maven 入门指南 ** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过标准化项目构建过程,使得开发人员可以更轻松地管理依赖、构建、测试和部署项目。本教程将引导初学者了解 Maven 的...
【 Maven 入门指南:构建你的 HelloWorld 项目】 在软件开发中,Maven 是一个强大的项目管理和构建工具,尤其在 Java 开发领域中被广泛使用。Maven 提供了一个标准化的方式来管理项目的构建、报告和文档,使得开发...
3. **生命周期与插件**:Maven拥有标准化的构建生命周期,如clean、validate、compile、test、package、install和deploy等阶段。每个阶段都可以通过插件来实现具体任务,如编译、测试和打包。 4. **依赖管理**:...
5. **生命周期(Lifecycle)**: Maven有三个主要的生命周期:clean(清理)、default(构建)和site(生成项目站点)。每个生命周期包含多个阶段(phases),阶段按顺序执行。 ### Maven常用命令 - `mvn clean`: ...
3. **生命周期与构建阶段**:Maven有预定义的生命周期,包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、安装(install)和部署(deploy)等阶段。开发者可以通过简单的命令行...
"Maven安装Linux版本过程说明" Maven是一种基于项目对象模型(POM)的...本文详细介绍了Maven的安装过程、Maven的基本概念、Maven的仓库管理和Maven的生命周期和阶段等内容,为读者提供了一个全面的Maven入门指南。
** Maven 2.0.9 入门指南 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过提供一套标准化的构建过程,使得开发者可以更方便地管理项目的依赖关系、构建流程以及资源文件。Maven 2.0.9 是 Maven...
2. **入门指南**:详细介绍如何搭建 Maven 环境,编写第一个 Maven 项目等。 3. **POM 参考**:深入讲解 pom.xml 文件的各个元素及其作用。 4. **配置参考**:介绍如何通过 settings.xml 文件自定义 Maven 的行为。 ...