Maven3实战笔记04Maven的生命周期和插件
- 格式:doc
- 大小:64.50 KB
- 文档页数:5
Maven实战:Maven⽣命周期前⾔之前有写过⼀篇⽂章,介绍了Maven的⼀些基本概念,以及对于⼀个初学者⽽⾔的Maven基础知识,当时在我看来掌握了这些基本是够⽤的。
随着⼯作的深⼊,越来越感觉对于Maven的理解不够,很多时候使⽤Maven出了问题都⽆法很快地解决,因此打算深⼊地从搭建Maven⼯程开始学习⼀下Maven,这篇⽂章就将⾃⼰的学习历程记录下来和⽹友朋友们分享。
从搭建最简单的Maven项⽬开始LZ使⽤的是MyEclipse,那么就是⽤MyEclipse搭建⼀个简单的Maven项⽬。
第⼀步,new⼀个Maven Project:点击next:这⾥不推荐勾选"Create a simple project(skip archetype selection)",这样就可以使⽤很多Maven Archetype,也就是Maven原型,点击next:看到这⾥出现了很多Maven推荐给开发者的原型,"org.apache.maven"开头的都是maven官⽅推荐的,选择⼀个简单的"maven-archetype-quickstart",接着就是填⼊⼀些基本信息:这些信息填写⽐较⾃由,当然之后也会对Group Id、Artifact Id、Version、Package等再做解释,点击finish,MyEclipse就给我们⽣成好了⼀个Maven⼯程:这就是"maven-archetype-quickstart"原型⽣成的标准⽬录结构,"src/main/java"⽤于编写Java代码、"src/test/java"⽤于编写测试类,看⼀下其中最重要的pom.xml:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.xrq.mvnstart</groupId><artifactId>hello-world</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>hello-world</name><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency></dependencies></project>看到"maven-archetype-quickstart"原型给我们导⼊了⼀个junit的jar包,⽤于单元测试。
maven知识点
Maven是一个基于项目对象模型(POM)的构建工具,它可以帮助开发者自动化构建、测试和部署Java应用程序。
在学习Maven时,需要掌握以下知识点:
1. POM文件:POM是Maven项目中的核心文件,用于描述项目的依赖、构建过程和其他配置信息。
2. 依赖管理:Maven可以管理项目的依赖关系,包括下载依赖、解决依赖冲突和管理依赖版本等。
3. 生命周期和插件:Maven的构建过程是由一系列阶段组成的,每个阶段都有其对应的插件执行。
学习Maven还需要了解如何编写自定义插件。
4. 仓库管理:Maven的仓库管理包括本地仓库和中央仓库。
本地仓库是用于缓存依赖的本地存储,而中央仓库则是Maven社区维护的公共仓库。
5. 多模块项目:Maven支持多模块项目,可以通过父子POM的方式管理多个子项目,实现模块化开发和部署。
学习以上知识点可以帮助开发者更好地使用Maven进行Java项目的构建和管理。
- 1 -。
maven build plugins 执行原理Maven是一个强大的项目管理和构建自动化工具,它使用一种基于插件的执行机制来构建项目。
以下是Maven插件执行原理的一些核心要点:1.插件和生命周期:Maven项目的构建过程是由一系列插件执行的,这些插件绑定到了项目的生命周期阶段上。
每个阶段都有一个或多个插件负责执行该阶段的任务。
2.依赖管理:Maven通过依赖管理机制,自动下载和解析项目所需的依赖项。
这大大简化了项目的构建过程,并确保了项目所依赖的库的版本一致性。
3.编译插件:编译插件用于将源代码编译成可执行的字节码。
在项目的compile阶段,Maven会调用编译插件对源代码进行编译。
4.测试插件:测试插件用于执行项目的单元测试和集成测试。
在项目的test阶段,Maven会调用测试插件来运行项目中的测试用例。
5.打包插件:打包插件用于将编译后的代码打包成可分发的格式,如JAR、WAR等。
在项目的package阶段,Maven会根据项目类型选择合适的打包插件,将项目打包成相应的格式。
6.部署插件:部署插件用于将打包后的项目发布到远程仓库或服务器上。
在项目的deploy阶段,Maven会调用部署插件进行项目的发布操作。
以上示例中,Maven通过将不同的任务绑定到生命周期的不同阶段上,并使用相应的插件来执行这些任务,从而实现了项目的自动化构建和管理。
这种机制简化了构建过程,提高了构建效率,并且通过统一的项目管理和构建规范,确保了项目的一致性和可维护性。
总结来说,Maven build plugins执行原理是指通过将任务绑定到生命周期阶段上,并使用插件来执行这些任务,从而实现项目的自动化构建和管理。
这种机制简化了构建过程,提高了构建效率,并且通过统一的项目管理和构建规范,确保了项目的一致性和可维护性。
maven知识点
Maven是一个用于Java项目自动化构建的工具,它可以帮助开发者自动化地管理项目的依赖、编译、打包、部署等工作。
以下是一些Maven的常用知识点:
1. Maven的文件结构:Maven项目的文件结构包括src/main、src/test、pom.xml等目录和文件,每个目录和文件都有特定的作用。
2. Maven的依赖管理:Maven可以通过pom.xml文件管理项目的依赖,开发者可以在其中指定所需的依赖库及其版本等信息。
3. Maven的生命周期和插件:Maven的构建过程按照一定的生命周期执行,每个生命周期包含多个阶段,开发者可以通过插件扩展生命周期和实现自定义的构建任务。
4. Maven的打包和部署:Maven可以将项目打包成Jar、War、Ear等格式,并将打包后的文件部署到本地或远程仓库中,方便其他开发者使用。
5. Maven的常用命令:使用Maven的命令行工具可以执行各种构建任务,例如mvn clean、mvn compile、mvn package、mvn install 等。
以上是Maven的一些常用知识点,掌握这些知识可以帮助开发者更加高效地使用Maven构建Java项目。
- 1 -。
maven的lifecycle的用法(一)Maven的lifecycleMaven是一款强大的项目管理工具,它通过定义一套标准的生命周期来管理项目的构建、测试、打包和部署等整个过程。
在使用Maven 时,你可以通过运行不同的lifecycle来执行特定的操作。
什么是Maven的lifecycle?Maven的lifecycle是指一系列的构建步骤,按照特定的顺序执行,包括clean、validate、compile、test、package、verify、install和deploy等阶段。
每个阶段都有一个或多个与之关联的插件目标。
通过执行不同的lifecycle,你可以完成各种构建和部署的操作。
Maven的lifecycle的用法使用Maven的lifecycle非常简单,只需要在命令行中运行指定的命令即可。
下面列举了几个常用的lifecycle及其对应的命令:•clean:清理项目的目标文件和构建结果。
命令为mvn clean。
•validate:验证项目的基本信息是否正确。
命令为mvn validate。
•compile:编译项目的源代码。
命令为mvn compile。
•test:运行项目的单元测试。
命令为mvn test。
•package:将项目打包成可发布的格式,如JAR或WAR。
命令为mvn package。
•verify:对打包结果进行验证。
命令为mvn verify。
•install:将项目的构件安装到本地仓库中。
命令为mvn install。
•deploy:将项目的构件部署到远程仓库中。
命令为mvn deploy。
Maven的lifecycle的执行顺序Maven的lifecycle的执行顺序是固定的,按照clean、validate、compile、test、package、verify、install和deploy的顺序依次执行。
如果在执行过程中出现错误,Maven会立即停止执行并报告错误信息。
深入理解maven及应用(一):生命周期和插件在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的build速度,于是下定决心再看看《maven实战》吧,对于我来说,maven最主要的作用有两个方面,一个是对jar包的依赖解决功能,自己管理jar包,另一个功能就是项目的构建,打包部署。
现在我觉得最重要的还是maven的生命周期和插件机制,下面就来总结一下吧。
1、三套生命周期对于maven的生命周期来说,共有三个相互独立的生命周期,分别是clean、default、site。
clean生命周期目的是清理项目,default生命周期目的是构建项目,而site生命周期目的是建立项目站点。
每个生命周期分别包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。
如clean生命周期包含pre-clean、clean和post-clean 三个阶段,如果执行clean阶段,则会先执行pre-clean阶段。
较之于生命周期阶段有前后依赖关系,三套生命周期本身是相互独立的,用户可以仅调用clean生命周期的某个阶段,也可以不执行clean周期,而直接执行default生命周期的某几个阶段。
2、clean生命周期clean生命周期包含三个阶段,主要负责清理项目,如下:3、default生命周期default生命周期定义了真正构建时所需要执行的所有步骤,包含的阶段如下:4、site生命周期siet生命周期的目的是建立和发布项目站点,maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息,包含的阶段如下:5、命令行与生命周期从命令行执行maven任务的最主要方式就是调用maven的生命周期阶段。
需要注意的是,各个生命周期是相互独立的,而一个生命周期的阶段是有前后依赖关系的。
maven生命周期:有三个内置的生命周期:默认(default),清洁(clean)和站点(site)。
在默认(default)的生命周期处理你的项目部署,将清洁(clean)的生命周期处理项目的清理,而网站(site)的生命周期处理你的项目站点文档的创建。
1.maven-compiler-plugin2.maven-war-plugin插件能够收集web应用所有的依赖,类和资源文件,然后把它们打包归档war:war3.maven-clean-plugin4.maven-install-plugin5.maven-surefire-plugin单元测试插件6.maven-deploy-plugin发布插件7.maven-dependency-plugin是处理与依赖相关的插件,这里主要介绍用得最多的几个操作:copy, copy-dependencies和它们对应的unpack, unpack-dependenciescopy 和unpack操作是由要拷某个包,这个包需要具体指定要拷哪个包,与当前工程的依赖没有关系。
copy-dependencies和它有点类似,但是它是用来拷当前工程的依赖包的,典型的,例如我们有一个web应用,当打成war包的时候,它所有的依赖也需要被打到应用中。
8.maven-source-plugin 生成源代码jar包9.maven-resources-plugin 资源文件10.maven-jar-plugin 将项目打成jar包11.maven-assembly-plugin生成可以直接运行的jar包(如果项目中用到SpringFramework,用这种方式打出来的包运行时会出错)12.。
maven 原理Maven(也称为Apache Maven)是一种构建工具,用于管理Java 项目的构建、依赖和文档等方面。
它是基于项目对象模型(POM)的。
在Maven中,POM是一个XML文件,用于描述项目的配置信息,包括项目的依赖关系、构建过程和插件等。
Maven的主要原理有以下几个方面:1.依赖管理:Maven通过POM文件中的<dependencies>元素来管理项目的依赖关系。
开发人员只需要指定所需的依赖项和版本号,Maven 就会自动下载所需的Jar包,并将其添加到项目的classpath中。
这种依赖管理的方式可以大大简化项目的构建和部署过程,并提高代码的可重用性。
2.插件机制:Maven使用插件来扩展其功能。
插件是一些预定义的构建任务,它们可以用于编译代码、打包项目、运行测试以及生成文档等。
插件可以通过POM文件中的<build>元素来配置,开发人员可以根据需要选择并配置各种插件。
Maven提供了大量的插件供开发人员使用,而且还支持自定义插件,使得开发人员可以根据需要扩展Maven的功能。
3.生命周期和构建过程:Maven将项目的构建过程划分为不同的生命周期和阶段。
生命周期是指一系列阶段的组合,每个阶段都代表了构建过程中的一个特定环节。
例如,Maven的默认生命周期包括clean、validate、compile、test、package、install和deploy等阶段。
开发人员可以根据需要选择并配置所需的生命周期,以及每个阶段的具体任务。
在每个阶段开始时,Maven会自动执行相应的任务,并按照指定的顺序依次执行。
4.仓库管理:Maven使用仓库来存储和管理项目的依赖项。
仓库分为本地仓库和远程仓库两种类型。
本地仓库位于开发人员的本地机器上,用于存储和缓存已下载的依赖项。
远程仓库位于网络上的服务器上,用于存储和共享项目的依赖项。
Maven会自动从远程仓库下载所需的依赖项,并将其缓存到本地仓库中,以便以后的构建使用。
maven的lifecycle的用法Maven是一个强大的构建工具,它提供了一种灵活的方法来构建、测试和部署Java项目。
它的核心概念之一就是Lifecycle(生命周期)。
Lifecycle定义了项目构建过程中的一系列阶段(Phase)和插件目标(Goal),通过配置它们的调用顺序和触发条件,我们可以实现自定义的构建过程。
Maven的生命周期可以分为三个阶段:clean、default和site。
每个阶段都包含了一系列的插件目标。
我们可以通过在项目的pom.xml文件中配置插件和目标,来调用这些插件和目标,从而完成自动化构建。
clean阶段用于清理项目,它包含了一个插件目标:clean。
这个目标会删除项目根目录下的target目录,清理掉之前构建的结果。
clean 是一个非常有用的目标,它可以帮助我们保持项目的干净和整洁。
default阶段是Maven的默认阶段,它是构建过程中最主要的阶段。
default阶段包含了一系列的阶段和插件目标。
这些阶段和目标的调用顺序是严格定义的,它们按照顺序执行,从而完成项目的构建。
default阶段的第一个阶段是validate,它用于验证项目的合法性。
validate阶段主要执行一些基本的验证操作,例如检查项目的基本结构和配置文件是否正确。
test阶段完成后,进入package阶段。
package阶段用于打包编译后的代码。
Maven使用maven-jar-plugin插件来完成打包操作。
该插件将编译后的字节码文件打包成一个JAR文件。
除了JAR包,Maven还支持打包成WAR、EAR等其他类型的包。
package阶段完成后,进入install阶段。
install阶段用于将打包后的文件安装到本地仓库。
Maven会将构建生成的JAR包安装到本地仓库,这样其他项目就可以引用这个JAR包了。
install阶段也可以用于发布到远程仓库,以供其他人使用。
install阶段完成后,进入deploy阶段。
Maven3实战笔记04Maven的生命周期和插件
1.Maven的生命周期
Maven的生命周期其实是指它对所有的构建过程进行了反复的推敲、反思,之后总结了一套高度抽象过程。
这个过程是高度完善的、容易扩展的。
基本上包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、、站点生成等步骤,几乎所有的项目生命周期也就这样。
Maven项目周期是一个抽象的概念,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体细节它不管。
具体的实现细节则交给了Maven的各个丰富的插件。
Maven的插件机制有可能是跟Eclipse学的,基于一个内核core,定义一堆流程性的东西,让插件去实现这些规范。
其他组织也可以根据这套规范插入自己的东西,形成有特色化的、自定制的Maven。
Maven有三套相互独立的生命周期,分别是:clean、default、site。
clean主要是清理项目、default是Maven最核心的的构建项目、site是生成项目站点。
每一个大的生命周期又分为很多个阶段。
后面的阶段依赖于前面的阶段,这点有点像Ant的构建依赖。
生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段,也就是说用户调用了default周期的任何阶段,并不会触发clean周期以及site周期的任何事情。
2.Maven生命周期阶段详解
3大生命周期蕴含着小小的阶段,我们按顺序看一下
clean周期:
pre-clean:准备清理
clean:真正的清理工作
post-clean:执行清理后的一些后续工作
default周期:
validate:验证
initialize:初始化配置
generate-sources:生成源代码编译目录
process-sources:处理项目主资源文件,复制资源文件到outputclasspath
generate-resources:生成资源目录
process-resources:处理资源文件
complie:编译源代码
process-classes:处理编译后文件
generate-test-sources:生成测试目录
process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath generate-test-resources:生成测试资源文件
process-test-resources:处理测试资源文件
test-compile:编译测试代码
process-test-classes:处理测试代码
test:单元测试运行测试代码
prepare-package:打包前的准备
package:将编译好的代码打包成为jar或者war或者ear等等
pre-integration-test:准备整体测试
integration-test:整体测试
post-integration-test:为整体测试收尾
verify:验证
install:安装到本地Maven库
deploy:将最终包部署到远程Maven仓库
site周期:
pre-site:准备生成站点
site:生成站点及文档
post-site:站点收尾
site-deploy:将生成的站点发布到服务器上
比如说在命令行执行了
就是执行到clean周期的clean阶段。
也就是说实际执行了pre-clean阶段与clean阶段。
就是执行了整个default生命周期
阶段。
3.Maven的插件机制
之前我们就说了Maven的生命周期仅仅是个抽象的标准,不干实事的,真正干事的人藏在了幕后,就是Maven插件。
插件本身为了能够代码复用,往往一个插件实现了很多功能,这个如果我们做过Eclipse插件开发的人也许更清楚,比如一个Eclipse的SVN插件,即实现了可以查看远程SVN资源库的信息,也可以下载远程代码,还可以上传代码。
这实际上是3个功能,而由一个jar实现。
在Maven中,管这个叫做“目标”。
比如maven-dependency-plugin基于项目依赖实现了很多事情,分析依赖、列出依赖树、分析依赖来源等等。
每个功能对应着一个插件的目标,插件的目标越多,插件的功能越多。
比如
就是使用maven-dependency-plugin插件的analyze目标,分析项目的依赖。
Maven的生命周期维系在了一起,比如default的compile这个阶段就是和maven-compiler-plugin这个插件的compile目标维系着不可分割的关系。
前者是领导,复杂发号施令,指定规则,后者是小兵,专门根据任务干活儿的人。
为了不让用户不用任何配置就能进行一般程度的项目构建,Maven默认给自己生命周期的核心阶段绑定了自己的插件。
clean如下:
site如下:
之后执行命令
定到了default周期的verify执行。
还有一点就是有些插件一旦写上了pom.xml会有默认的绑定周期,比如就拿以上插件说事,如果将<phase>verify</phase>去掉,执行
件的某些目标(功能)。
插件还能进行全局性质的参数配置,参数是什么就不用多说了吧,大家接触linux的都知道吧。
Configuration就是配置参数的。
4.Maven插件的详细信息
如果想获取插件的详细信息,一种途径就是通过在线官网查询(google一下就知道了),一种就是利用它的另一个插件,maven-help-plugin。
比如在命令行输入如下
为目标简写,也就是说你可以简写为
件:目标”的方式是适合该功能不方便与Maven生命周期绑定的情况下。
5.总结
这次主要概括了Maven的生命周期以及它的插件机制和插件的使用。
生命周期是Maven 核心的东西,插件也是Maven核心的东西,所以还是有必要看看的。
下次我们单独来看看之前没提到的解析机制,包括Maven仓库的依赖解析和Maven插件的解析机制。