当前位置:K88软件开发文章中心编程工具Maven → 文章内容

Apache Maven 构建生命周期

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:44:39

由 珍珍阿姨 创建, 最后一次修改 2016-08-12 Maven - 构建生命周期什么是构建生命周期构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序。这里的阶段是生命周期的一部分。举例说明,一个典型的 Maven 构建生命周期是由以下几个阶段的序列组成的:阶段处理描述prepare-resources资源拷贝本阶段可以自定义需要拷贝的资源compile编译本阶段完成源代码编译package打包本阶段根据 pom.xml 中描述的打包配置创建 JAR / WAR 包install安装本阶段在本地 / 远程仓库中安装工程包当需要在某个特定阶段之前或之后执行目标时,可以使用 pre 和 post 来定义这个目标。当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标。Maven 有以下三个标准的生命周期:cleandefault(or build)site目标表示一个特定的、对构建和管理工程有帮助的任务。它可能绑定了 0 个或多个构建阶段。没有绑定任何构建阶段的目标可以在构建生命周期之外被直接调用执行。执行的顺序依赖于目标和构建阶段被调用的顺序。例如,考虑下面的命令。clean 和 package 参数是构建阶段,而 dependency:copy-dependencies 是一个目标。mvn clean dependency:copy-dependencies package这里的 clean 阶段将会被首先执行,然后 dependency:copy-dependencies 目标会被执行,最终 package 阶段被执行。Clean 生命周期当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段。pre-cleancleanpost-cleanMaven 的 clean 目标(clean:clean)绑定到了 clean 生命周期的 clean 阶段。它的 clean:clean 目标通过删除构建目录删除了构建输出。所以当 mvn clean 命令执行时,Maven 删除了构建目录。我们可以通过在上面的 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.0 http://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 (or 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处理测试

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


Apache Maven 构建生命周期