Maven生命周期及其他核心概念
来源:互联网 发布:金融数据分析基于r 编辑:程序博客网 时间:2024/06/06 20:02
Maven作为一个构建工具由于遵循了约定优于配置的原则,只要编写比Ant所需少得多的脚本就能实现同样的构建。并且Maven还有很多Ant没有的高级特性,例如依赖管理等,这一切使得Maven不仅是构建工具,更是项目管理工具,并越发流行起来。
Maven拥有三套相互独立的生命周期,它们分别为clean,default和site。
- Clean Lifecycle在进行真正的构建之前进行一些清理工作。
- Default Lifecycle构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle生成项目报告,站点,发布站点。
每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。
较之于生命周期阶段的前后依赖关系,三套生命周期本身是相互独立的,用户可以仅仅调用clean生命周期的某个阶段,或者仅仅调用default生命周期的某个阶段,而不会对其他生命周期产生任何影响。
以下是我列出的百度百科中队maven的使用介绍,可见maven的使用是很简单的。
mvn archetype:create创建Maven项目
mvn compile编译源代码
mvn deploy发布项目
mvn test-compile编译测试源代码
mvn test运行应用程序中的单元测试
mvn site生成项目相关信息的网站
mvn clean清除项目目录中的生成结果
mvn package根据项目生成的jar
mvn install在本地Repository中安装jar
mvn eclipse:eclipse生成eclipse项目文件
mvn jetty:run启动jetty服务
mvn tomcat:run启动tomcat服务
正因为我们使用maven的方便,这导致了开发人员只是单纯的使用几个命令,而对Maven不求详细的了解,上述命令中有些有冒号,而有些没有,有冒号的命令是执行指定的插件,而没有冒号的命令是执行按照Maven生命周期里来执行的。那究竟生命周期又是什么呢?
一、生命周期
Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,实际的工作还是由插件来完成的。
上面我们也说到过,生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。
1. clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
1)pre-clean 执行一些清理前需要完成的工作。
2)clean 清理上一次构建生成的文件。
3)post-clean 执行一些清理后需要完成的工作。
2. default生命周期
default生命周期定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,它包含的阶段如下:
1) validate 验证项目是否正确和所有需要的相关资源是否可用
2) initialize 初始化构建
3) generate-sources
4) process-sources 处理源代码
5) generate-resources
6) process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
7) compile 编译项目的主源代码
8) process-classes
9) generate-test-sources
10) process-test-sources 处理项目测试资源文件
11)generate-test-resources
12) process-test-resources 处理测试的资源文件
13)test-compile 编译项目的测试代码
14)process-test-classes
15) test 使用单元测试框架运行测试,测试代码不会被打包或部署
16)prepare-package 做好打包的准备
17)package 接受编译好的代码,打包成可发布的格式
18) pre-integration-test
19) integration-test
20) postintegration-test
21) verify
22) install 将包安装到Maven本地仓库,供本地其他Maven项目使用
23)deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
3. site生命周期
site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
1)pre-site 执行一些在生成项目站点之前需要完成的工作
2)site 生成项目站点文档
3)post-site 执行一些在生成项目站点之后需要完成的工作
4)site-deploy 将生成的项目站点发布到服务器上
用户在mvn命令后可以指定三个生命周期中的任何阶段,则Maven会按以下逻辑执行:首先会得到该阶段所属生命周期,从该生命周期中的第一个阶段开始按顺序执行,直至该阶段本身。例如执行mvnclean命令会依次执行clean生命周期中的pre-clean阶段及clean阶段。mvn命令后可以指定多个阶段,Maven会按照输入的顺序依次执行,每次执行都会按照之前描述的逻辑执行
二、projectobject Model
- pom是一个xml,是maven工作的基础,执行任务时,maven会到项目根目录下读取pom.xml获得需要的配置信息
- pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等等
- pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom
三、Artifact & Repositories
- Artifact:一个项目将要产生的文件,可以是jar文件,源文件,二进制文件,war文件,甚至是pom
- Repositories是用来存储Artifact的
- Repositories分为本地仓库和远程仓库,远程仓库是指远程服务器上用于存储Artifact的仓库,本地仓库是指本机存储Artifact的仓库
四、Maven坐标
- Maven坐标是一组可以惟一标识构件的三元组值
- groupId,代表构件的实体或组织例如:org.inspur.loushang
- artifactId,实际的构件的名称,例如framework
- version,该构件件的版本号
packaging :定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-0.0.1-SNAPSHOT.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven会使用默认值jar
classifier:该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-0.0.1-SNAPSHOT.jar,该项目可能还会通过一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 这样附属构件也就拥有了自己唯一的坐标
- Maven生命周期及其他核心概念
- maven核心概念--生命周期
- Maven 核心概念——生命周期
- (八)maven核心概念-生命周期(Lifecycle)
- Maven核心概念之仓库,生命周期与插件
- Maven核心概念
- Maven核心概念
- Maven核心概念
- Maven中的核心概念
- Maven中的核心概念
- Maven中的核心概念
- maven核心概念
- (五)maven核心概念
- Maven核心概念
- Maven核心概念详解
- Maven核心概念
- Maven中的核心概念
- Maven核心概念
- PHP将数组写入文件
- MySQL的三大引擎:InnoDB、MyISAM和Memory
- netca.rsp详解
- 致每一位奋斗的年轻人
- bzoj3531: [Sdoi2014]旅行
- Maven生命周期及其他核心概念
- 数据结构实验:连通分量个数
- 基于Atheros无线芯片的设备、驱动、虚拟网桥分析
- Android 6.0获取wifi Mac地址为02:00:00:00:00:00的解决方法
- UILabel横向自适应
- LeetCode 457. Circular Array Loop
- 使用overridePendingTransition导致Activity切换动画执行中黑屏的问题
- Spring事务管理中@Transactional的参数配置
- 欢迎使用CSDN-markdown编辑器