当前位置:K88软件开发文章中心编程全书编程全书03 → 文章内容

Maven 构建生命周期

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:37:51

Maven 构建生命周期Maven 构建生命周期定义了一个项目构建跟发布的过程。一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:阶段处理描述验证 validate验证项目验证项目是否正确且所有必须信息是可用的编译 compile执行编译源代码编译在此阶段完成测试 Test测试使用适当的单元测试框架(例如JUnit)运行测试。包装 package打包创建JAR/WAR包如在 pom.xml 中定义提及的包检查 verify检查对集成测试的结果进行检查,以保证质量达标安装 install安装安装打包的项目到本地仓库,以供其他项目使用部署 deploy部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程为了完成 default 生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。Maven 有以下三个标准的生命周期:clean:项目清理的处理default(或 build):项目部署的处理site:项目站点文档创建的处理构建阶段由插件目标构成一个插件目标代表一个特定的任务(比构建阶段更为精细),这有助于项目的构建和管理。这些目标可能被绑定到多个阶段或者无绑定。不绑定到任何构建阶段的目标可以在构建生命周期之外通过直接调用执行。这些目标的执行顺序取决于调用目标和构建阶段的顺序。 例如,考虑下面的命令: clean 和 pakage 是构建阶段,dependency:





copy-dependencies 是目标mvn clean dependency:





copy-dependencies package这里的 clean 阶段将会被首先执行,然后 dependency:





copy-dependencies 目标会被执行,最终 package 阶段被执行。Clean 生命周期当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:pre-clean:执行一些需要在clean之前完成的工作clean:移除所有上一次构建生成的文件post-clean:执行一些需要在clean之后立刻完成的工作mvn clean 中的 clean 就是上面的 clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,如果执行 mvn clean 将运行以下两个生命周期阶段:pre-clean, clean如果我们运行 mvn post-clean ,则运行以下三个生命周期阶段:pre-clean, clean, post-clean我们可以通过在上面的 clean 生命周期的任何阶段定义目标来修改这部分的操作行为。在下面的例子中,我们将 maven-antrun-plugin:





run 目标添加到 pre-clean、clean 和 post-clean 阶段中。这样我们可以在 clean 生命周期的各个阶段显示文本信息。我们已经在 C:





\MVN\project 目录下创建了一个 pom.xml 文件。<project xmlns="http:





//maven.apache.org/POM/4.0.0"xmlns:





xsi="http:





//www.w3.org/2001/XMLSchema-instance"xsi:





schemaLocation="http:





//maven.apache.org/POM/4.0.0http:





//maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.companyname.projectgroup</groupId><artifactId>project</artifactId><version>1.0</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.1</version><executions><execution><id>id.pre-clean</id><phase>pre-clean</phase><goals><goal>run</goal></goals><configuration><tasks><echo>pre-clean phase</echo></tasks></configuration></execution><execution><id>id.clean</id><phase>clean</phase><goals><goal>run</goal></goals><configuration><tasks><echo>clean phase</echo></tasks></configuration></execution><execution><id>id.post-clean</id><phase>post-clean</phase><goals><goal>run</goal></goals><configuration><tasks><echo>post-clean phase</echo></tasks></configuration></execution></executions></plugin></plugins></build></project>现在打开命令控制台,跳转到 pom.xml 所在目录,并执行下面的 mvn 命令。C:





\MVN\project>mvn post-cleanMaven 将会开始处理并显示 clean 生命周期的所有阶段。[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------[INFO] Building Unnamed - com.companyname.projectgroup:





project:





jar:





1.0[INFO] task-segment:





[post-clean][INFO] ------------------------------------------------------------------[INFO] [antrun:





run {execution:





id.pre-clean}][INFO] Executing tasks [echo] pre-clean phase[INFO] Executed tasks[INFO] [clean:





clean {execution:





default-clean}][INFO] [antrun:





run {execution:





id.clean}][INFO] Executing tasks [echo] clean phase[INFO] Executed tasks[INFO] [antrun:





run {execution:





id.post-clean}][INFO] Executing tasks [echo] post-clean phase[INFO] Executed tasks[INFO] ------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ------------------------------------------------------------------[INFO] Total time:





< 1 second[INFO] Finished at:





Sat Jul 07 13:





38:





59 IST 2012[INFO] Final Memory:





4M/44M[INFO] ------------------------------------------------------------------你可以尝试修改 mvn clean 命令,来显示 pre-clean 和 clean,而在 post-clean 阶段不执行任何操作。Default (Build) 生命周期这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段:生命周期阶段描述validate检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。initialize初始化构建状态,例如设置属性。generate-sources生成编译阶段需要包含的任何源码文件。process-sources处理源代码,例如,过滤任何值(filter any value)。generate-resources生成工程包中需要包含的资源文件。process-resources拷贝和处理资源文件到目的目录中,为打包阶段做准备。compile编译工程源码。process-classes处理编译生成的文件,例如 Java Class 字节码的加强和优化。generate-test-sources生成编译阶段需要包含的任何测试源代码。process-test-sources处理测试源代码,例如,过滤任何值(filter any values)。test-compile编译测试源代码到测试目的目录。process-test-classes处理测试代码文件编译后生成的文件。test使用适当的单元测试框架(例如JUnit)运行测试。prepare-package在

[1] [2] [3]  下一页


Maven 构建生命周期