`

Maven内置隐式变量,Maven生命周期详解

 
阅读更多
Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings

env

env变量,暴露了你操作系统或者shell的环境变量。便 如在Maven POM中一个对${env.PATH}的引用将会被${PATH}环境变量替换,在Windows中为%PATH%.

projetc

project变量暴露了POM。可以使用点标记(.)的路径来引用POM元素的值。例如

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<finalName>${project.groupId}-${project.artifactId}</finalName>
</build>
</project>

当你使用mvn help:effective-pom 查看时,你会看到<finalName>org.sonatype.mavenbook-project-a</finalName>


Maven内置隐式变量
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
settings
settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引用settings.xml文件中元素的值。例如${settings.offline}会引用~/.m2/settings.xml文件中offline元素的值。


Maven生命周期详解
一般情况下,mvn clean install 这样的命令是通用的。我想,一定是吸收了许多项目的经验,Maven才能定义出如此完善的模型。

Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是:
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
我再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

知道了每套生命周期的大概用途和相互关系以后,来逐个详细看一下每套生命周期,Clean和Site相对比较简单,先解释一下。

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有点绕?要知道有Clean生命周期,也有clean阶段。Clean生命周期一共包含了三个阶段:
pre-clean  执行一些需要在clean之前完成的工作
clean  移除所有上一次构建生成的文件
post-clean  执行一些需要在clean之后立刻完成的工作
mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。

下面看一下Site生命周期的各个阶段:
pre-site     执行一些需要在生成站点文档之前完成的工作
site    生成项目的站点文档
post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy     将生成的站点文档部署到特定的服务器上
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。

最后,来看一下Maven的最重要的Default生命周期,绝大部分工作都发生在这个生命周期中,这里,我只解释一些比较重要和常用的阶段:
validate
generate-sources
process-sources
generate-resources
process-resources     复制并处理资源文件,至目标目录,准备打包。
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 。
pre-integration-test
integration-test
post-integration-test
verify
install     将包安装至本地仓库,以让其它项目依赖。
deploy     将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
分享到:
评论

相关推荐

    JDK和maven的环境变量配置

    JDK和Maven环境变量配置 JDK环境变量配置是Java开发环境的基础配置,正确的配置可以确保Java应用程序的正确运行。下面将详细介绍JDK环境变量配置的步骤。 首先,需要安装JDK,假设安装在E:\jdk1.5.0目录下。然后,...

    maven 配置环境变量

    maven 配置环境变量,需要从官网下载本地程序包,设置电脑的环境变量,开发java project 项目使用maven 仓库,本地maven仓库

    Maven3实战笔记04Maven的生命周期和插件

    ### Maven的生命周期和插件详解 #### Maven生命周期概述 Maven是一个项目管理和综合工具,它通过一系列预定义的任务和明确的构建生命周期来管理项目的构建、报告和文档。Maven的核心特性之一是其生命周期...

    Maven的生命周期和插件

    **Maven的生命周期和插件** Maven是Java开发中广泛使用的项目管理和综合工具,它通过定义一套标准的生命周期和构建过程,简化了项目的构建、依赖管理以及文档生成等工作。在Maven的世界里,理解生命周期和插件的...

    自用maven-3.8.4,内含maven配置环境变量保姆级教程.doc

    ** Maven详解及环境变量配置指南 ** Maven是Java开发中的一个项目管理和综合工具,它极大地简化了构建、依赖管理以及项目的生命周期。本教程将详细讲解如何安装与配置Maven 3.8.4,包括环境变量的设置,旨在帮助...

    Maven 生命周期.pdf

    Maven生命周期主要分为三个独立的生命周期:clean生命周期、default生命周期和site生命周期。 1. Clean生命周期:其主要目的是清理项目,移除之前构建过程中产生的所有文件,为新的构建做准备。clean生命周期包含一...

    eclipse-maven内置

    Eclipse 是一个强大的集成开发...总结,Eclipse-Maven内置是开发Java项目时的强大工具,它简化了项目管理,使得开发、构建和依赖管理更加高效。通过充分利用这些功能,开发人员可以在统一的环境中高效地进行软件开发。

    maven环境变量配置教程

    Maven是Java开发中不可或缺的构建工具,它管理项目依赖、构建生命周期和项目信息,使得开发者能够高效地构建和管理项目。本教程将详细介绍Maven环境变量的配置过程,以确保Maven在你的系统中能够正常运行。 首先,...

    细数 Maven 构建的乐章:常用生命周期阶段全解析

    3. **项目生命周期**:Maven 定义了一系列的构建生命周期阶段,如 `clean`、`compile`、`test`、`package` 等,每个阶段执行特定的构建任务。 4. **插件和目标**:Maven 拥有丰富的插件生态系统,每个插件可以执行...

    关于 maven生命周期 最新 最全

    Maven生命周期 最新版 最全 最好用

    maven安装和环境变量配置

    ### Maven安装与环境变量配置详解 #### 一、Maven简介 Apache Maven 是一个软件项目管理工具,基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告和文档。Maven 提供了一个项目对象模型(POM)来管理...

    Maven安装配置外加Myeclipse上完美运行图解

    在“系统变量”中,新建一个名为 MAVEN_HOME 的变量,并将其值设置为 Maven 的安装目录。 Step 3:配置 Path 变量 在配置环境变量后,需要将 Maven 的安装目录添加到 Path 变量中。这样可以使得 Maven 可以在...

    maven settings配置详解

    maven的setting配置文件详解。。。。

    win7配置Maven环境变量.rar

    本文将详细介绍如何在Win7系统中设置Maven的环境变量,以确保能够顺利地运行和管理Java项目。 首先,我们需要下载Maven的最新稳定版本。通常,我们可以从Apache官方网站(https://maven.apache.org/download.cgi)...

    大话Maven生命周期

    Maven非常强大的重要原因是它有十分完善的生命周期模型 lifecycle 这个生命周期可以从两方面来理解 第一 顾名思义 运行Maven的每个步骤都由它来定义的 这种预定义的默认行为使得我们使用Maven变得简单 相比而言 Ant...

    配置好的maven 3.6.3配置文件以及环境变量设置教程

    本教程将详细介绍如何配置Maven 3.6.3,特别是针对中国开发者优化的阿里云镜像源,以及如何在JetBrains的IntelliJ IDEA中设置相关环境变量。 首先,让我们深入了解一下Maven。Maven是一个项目管理和综合工具,它...

    maven pom.xml 动态读取变量值插件

    该jar包功能,可以在一个properties文件里面定义jdbc.url=${url},在另一个properties文件定义具体的...下载之后,自行安装到本地maven仓库,安装命令参考我另一篇博文。具体pom.xml配置使用可以参考网络其他博文,谢谢

    MAVEN一键批处理配置环境变量

    WINDOWS 10 一键配置MAVEN 环境变量.抛砖引玉吧,我的代码是根据JAVA一键配置环境变量改编而来的。如有不足之处希望大神们指点。

Global site tag (gtag.js) - Google Analytics