maven-标准目录结构、常用命令、生命周期、概念模型图
maven-标准目录结构
作为一个maven工程,它的src目录和pom.xml是必备的,进入src目录后,我们发现它里面的目录结构如下:
src/main/java ——存放项目的.java文件
src/main/resource——存放项目资源文件,如spring,hibernate配置文件
src/test/java——存放所有单元测试.java文件,如JUnit测试类
src/test/resource——测试资源文件
target——项目输出位置,编译后的class文件会输出到此目录
pom.xml——maven项目核心配置文件
注意:如果是普通的java项目,那么就没有webapp目录
maven-常用命令
1、maven clean:对项目进行清理,删除target目录下编译的内容
2、maven compile:编译项目源代码
3、maven test:对项目进行运行测试
4、maven packet:打包文件并存放到项目的target目录下,打包好的文件通常都是编译后的class文件
5、maven install:在本地仓库生成仓库的安装包,可供其他项目引用,同时打包后的文件放到项目的target目录下
1、mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(web包或其它形式的包)部署到本地maven仓库或远程maven私服仓库
2、mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)部署到本地maven仓库,但没有部署到远程maven私服仓库
3、mvn clean deploy依次执行了clean、resources、compile、testResources、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)部署到本地maven仓库和远程maven私服仓库
maven-生命周期
maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是"三套",而且"相互独立",这三套生命周期分别是:
Clena Lifecycle在进行真正的构建之前进行一些清理工作。
Default Lifecycle构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle生成项目报告,站点,发布站点。
maven-概念模型图
Maven包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(gial)的逻辑
项目对象模型(Project Object Model)一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标、项目依赖、项目信息、插件目标等
依赖管理系统(Dependency Management System)通过maven的依赖管理对项目所依赖的jar包进行统一管理。比如:项目依赖junit4.9,通过在pom.xml中定义junit4.9的依赖即使用junit4.9,如下所示是junit4.9的依赖定义
<dependencies> <!-- 此项目运行使用 junit,所以此项目依赖 junit --> <dependency> <!-- junit 的项目名称 --> <groupId>junit</groupId> <!-- junit 的模块名称 --> <artifactId>junit</artifactId> <!-- junit 版本 --> <version>4.9</version> <!-- 依赖范围:单元测试时使用 junit --> <scope>test</scope> </dependency> </dependencies>
一个项目生命周期(Project Lifecycle)使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等等过程,maven将这些过程规范为一个生命周期,如下所示是声明周期的各个阶段
maven通过执行一些简单命令即可实现上边生命周期的各个过程,比如执行mvn compile 执行编译、执行mvn clean执行清理。
一组标准集合
maven将整个项目管理过程第一一组标准,比如:通过maven构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
插件(plugin)目标(goal)
maven管理项目生命周期过程都是基于插件完成的。