maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在maven的设计中,实际的任务(比如编译源代码)都交由插件去完成。这种设计思想与设计模式中的模板方法非常类似。
public abstract class AbstractBuild { public void build() { initialize(); compile(); test(); packagee(); integrationTest(); deploy(); } protected abstract void initialize(); protected abstract void compile(); protected abstract void test(); protected abstract void packagee(); protected abstract void integrationTest(); protected abstract void deploy(); }
在maven的生命周期中,每个步骤可以绑定一个或多个插件行为,而且maven为大多数构建步骤编写并绑定了默认插件。例如针对编译的插件有maven-compiler-plugin,针对测试有maven-surefire-plugin等。
>> 三套生命周期详解
初学者往往以为maven生命周期是一个整体,其实不然,maven拥有三套相互独立的生命周期,它们分别是clean、default和site。clean升级周期目的是清理项目,default生命周期的目的是构件项目,而site生命周期目的是建立项目站点。
每个生命周期包含一些阶段phase,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。
三套生命周期是相互独立的,比如当用户调用default生命周期的compile阶段的时候,是不会执行clean的,知道我要说啥了吧。
>> clean生命周期:
* pre-clean:执行清理前需要完成的工作
* clean清理上一次构建生成的文件
* post-clean:执行一些清理后需要完成的工作
>> default生命周期:
* validate
* initialize
* generate-sources
* process-sources:处理项目主资源文件。一般来说是对/src/main/resources/目录的内容进行变量替换等工作后,复制到输出目录的主classpath中去
* generate-resources
* process-resources
* compile:编译项目主源码到输出目录中去
* process-classes
* generate-test-sources
* process-test-sources:处理项目测试资源文件。一般来说,是对/src/test/resources目录内容进行变量替换等工作后,复制到项目输出的测试classpath中
* generate-test-resources
* process-test-resources
* test-compile:编译项目的测试代码。一般来说是编译/src/test/java目录下的java文件到输出的测试classpath目录中
* process-test-classes
* test:使用单元测试框架进行测试,测试代码不会被打包后部署
* prepare-package
* package:接受编译好的代码,打包成可发布格式比如jar
* pre-integration-test
* integration-test
* post-integration-test
* verify
* install:将包安装到maven本地仓库中,供本地其他maven项目使用
* deploy:将最终的包复制到远程仓库,供其他开发人员和maven项目使用。
这里只是将重点的几个阶段解释了下,对于其他的可用查阅官方文档:
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
>> site生命周期
site生命周期目的是建立和发布项目站点,maven能够基于pom所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
* pre-site:执行在生成项目站点之前需要完成的工作
* site:生成项目站点
* post-site:执行在生成项目站点之后需要完成的工作
* site-deploy:将生成的项目站点发布到服务器上
>> 命令行与生命周期
从命令行执行maven任务最主要的方式就是调用maven的生命周期阶段:
mvn clean:调用clean生命周期的clean阶段,实际是pre-clean和clean阶段
mvn test:执行default生命周期的test阶段,也就是从validate一直到test阶段
mvn clean install:执行clean生命周期到clean阶段,然后执行default生命周期到install阶段
mvn clean deploy site-deploy:不解释了。。。
>> 自定义绑定
除了还内置绑定外,用户还可以自己绑定某个插件目标到生命周期某个阶段上,比如创建项目的源码source的jar包:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>attache-sources</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
插件的仓库配置:
<pluginRepositories> <pluginRepository> <id>central</id> <name>Maven Plugin Repository</name> <url>http://repo1.maven.org/maven2/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
本人博客已搬家,新地址为:http://yidao620c.github.io/
相关推荐
### Maven的生命周期和插件详解 #### Maven生命周期概述 Maven是一个项目管理和综合工具,它通过一系列预定义的任务和明确的构建生命周期来管理项目的构建、报告和文档。Maven的核心特性之一是其生命周期...
Maven更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入以下配置即可解决 alimaven aliyun maven ...
**Maven的生命周期和插件** Maven是Java开发中广泛使用的项目管理和综合工具,它通过定义一套标准的生命周期和构建过程,简化了项目的构建、依赖管理以及文档生成等工作。在Maven的世界里,理解生命周期和插件的...
3. **项目生命周期**:Maven 定义了一系列的构建生命周期阶段,如 `clean`、`compile`、`test`、`package` 等,每个阶段执行特定的构建任务。 4. **插件和目标**:Maven 拥有丰富的插件生态系统,每个插件可以执行...
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。...在本文中,我们详细介绍了 tomcat8-maven-plugin 插件的使用方法和优点。
实现这样的Maven插件需要对Maven生命周期、插件机制、数据库操作以及Java反射有深入的理解。开发者需要定义插件的目标(goal),并在Maven的构建生命周期中找到合适的阶段来执行这个目标。此外,插件还需要连接到...
idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...
liquibase-maven-插件 Liquibase 的 Maven 插件。
4. **插件和目标**:Maven拥有丰富的插件系统,可以通过插件扩展构建过程。每个插件可以执行特定的任务(目标)。 5. **继承和聚合**:Maven支持项目继承,允许创建模块化项目,并且可以轻松地构建整个项目或单个...
Apache Tomcat Maven 插件是Java开发者在使用Maven构建工具时非常实用的一个工具,它允许开发者方便地集成Apache Tomcat...通过深入理解和使用这个插件,开发者可以更好地管理他们的应用生命周期,实现快速开发和部署。
这个插件会生成您pom.xml的扁平版本,并使maven可以安装和部署该版本,而不是原始pom.xml。 <groupId>org.codehaus.mojo <artifactId>flatten-maven-plugin <!--<version>INSERT LATEST VERSION HERE...
Maven-Helper 插件是 IntelliJ IDEA 中的一款功能强大且实用的插件,旨在帮助开发者更好地管理 Maven 项目的依赖关系。下面是 Maven-Helper 插件的主要知识点: 1. 依赖关系查看:Maven-Helper 插件提供了一个简洁...
生命周期包括三个主要部分:clean生命周期、default生命周期和site生命周期。 - clean生命周期:负责清理项目,包括`pre-clean`、`clean`和`post-clean`阶段。 - default生命周期:这是最常用的一个生命周期,...
8. **m2e插件功能**:m2e插件提供了与Maven的紧密集成,包括POM编辑、项目构建、依赖管理、生命周期映射等功能,让开发者在MyEclipse中能直接操作Maven项目,无需离开IDE。 9. **注意事项**:在Windows XP系统中,...
XJar-Maven-Plugin是对的一个Maven插件封装,实现可通过Maven命令或绑定在Maven的生命周期之中执行,从而更加便捷的方式集成了 。 GitHub: : 什么是XJar XJar是基于对JAR包内部资源的加密以及扩展ClassLoader来...
此外,Maven的生命周期和插件机制保证了所有使用Maven的项目遵循一致的构建标准,同时也为开发者提供了足够的灵活性来自定义构建过程。 在实际使用Maven时,开发者通常会通过命令行直接与生命周期进行交互。例如,...
1. **构建生命周期**: Maven 的生命周期包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(install)、部署(deploy)等阶段。 2. **构建命令**: 使用 `mvn clean ...
第7章:生命周期和插件/7.4 插件绑定/7.4.2 自定义生命周期和插件的绑定 第7章:生命周期和插件/7.5 插件配置/7.5.1 命令行插件参数设置 第7章:生命周期和插件/7.5 插件配置/7.5.2 POM文件中进行插件参数设置 第7章...