Maven 工程的认识
Maven 工程的目录结构
作为一个 maven 工程,它的 src目录和 pom.xml 是必备的。 进入 src目录后,我们发现它里面的目录结构如下:
* src/main/java —— 存放项目的.java 文件
* src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
* src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
* src/test/resources —— 测试资源文件
* target —— 项目输出位置,编译后的class 文件会输出到此目录
* pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有webapp 目录。
Maven 工程的运行
进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat7:run 命令。
根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven
Maven 常用命令
我们可以在cmd 中通过一系列的 maven 命令来对我们的 maven-helloworld 工程进行编译、测试、运 行、打包、安装、部署。
compile
compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。
cmd 进入命令状态,执行mvn compile,如下图提示成功:
———编译后——>
test
test 是 maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
package
package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于web 工程打成war 包。
clean
clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
install
install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。 从运行结果中,可以看出: 当后面的命令执行时,前面的操作过程也都会自动执行。如:install执行时,前面的操作(compile、test、package)都会自动执行一边。
Maven 指令的生命周期
maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”, 这三套生命周期分别是:
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
maven 的概念模型
Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段 (phase)中插件(plugin)目标(goal)的逻辑。
* 项目对象模型 (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 管理项目生命周期过程都是基于插件完成的。