目录
1.1 生命周期是什么
在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。
1.2 maven的三套生命周期
maven拥有三套相互独立的生命周期,分别是clean,default和site。clean 生命周期的目的是清理项目 ,default 生命周期的作用是构建项目 ,site 生命周期的目的是构建项目站点 。
maven的生命周期都对应着具体的命令如下:
clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
- pre-clean 执行一些清理前需要完成的工作;
- clean 清理上一次构建生成的文件;
- post-clean 执行一些清理后需要完成的工作;
default生命周期
default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:
- compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;
- test :使用单元测试框架运行测试,测试代码不会被打包或部署;
- package :接收编译好的代码,打包成可以发布的格式,如jar和war;
- install: 将包安装到本地仓库,供其他maven项目使用;
- deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;
site生命周期
site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:
- site :生成项目站点文档;
2、maven生命周期相关命令
我们使用以下命令可以完成maven生命周期,演示生命周期的命令必须在pom.xml所在的目录下打开dos窗口然后输入如下命令进行演示。
1.找到pom.xml文件位置
2.在pom.xml文件位置输入cmd打开dos窗口
mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件;
mvn compile :编译src/main/java中的java代码;
mvn test :编译并运行了test中内容 ;
mvn package:将项目打包成可发布的文件,如jar或者war包;
mvn install :发布项目到本地仓库 ;
2.1、mvn clean
clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;
需求:清理存储上一次构建项目生成的文件target.
未清理前:
清理之后:
2.2、mvn compile
compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。
2.3、mvn test
test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 **并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。
在test/java目录下创建一个测试类,书写测试方法,代码如下:
package com.itheima.sh.maven_test_01;
import org.junit.Test;
public class MavenTest {
@Test
public void show() {
System.out.println("show....");
}
}
在dos窗口输入的测试命令:
mvn test
2.4、 mvn package
package命令是将项目打包成可以发布的包。maven项目常见的打包方式有两种:
1)maven的java project会打成jar包。
2)maven的web project会打成war包。
打包完成后将生成的文件存放在target目录中。
命令使用格式:
mvn package
注意:每次打包前还会再次执行所有test命令
2.5、 mvn install
install命令是将当前的项目打包并发布到本地仓库中,供本地的其他maven项目使用。项目发布的路径:**本地仓库路径/groupId/artifactId/
注意:每次安装前还会再次执行所有test命令
2.6、mvn tomcat:run
tomcat:run表示部署项目,项目上线运行。能够部署项目都是web项目。我们这里演示部署web项目。这里启动tomcat并不是使用idea中的tomcat,而是maven自带的。所以我们部署好项目之后发现idea中的tomcat并没有启动。
注意:使用maven在命令行中部署项目,一定要停止idea中的tomcat。否则,在命令行中不会启动成功tomcat。