Maven学习笔记(一):Maven概述

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

全部章节传送门:
Maven学习笔记(一):Maven概述
Maven学习笔记(二):Maven依赖
Maven学习笔记(三):POM文件
Maven学习笔记(四):Maven仓库
Maven学习笔记(五):Maven插件

Maven 项目目录结构

一个标准的Maven工程可以包含如下目录:

src                                 
 |--main
     |--java         源代码目录
     |--resources    资源目录      
 |--test
     |--java         测试代码目录
     |--resources    测试资源目录
 |--target
     |--classes      编译后的class文件目录
     |--test-classes 编译后的测试class文件目录
 pom.xml             Maven工程配置文件

这时大部分Maven工程的目录结构,在这个基础上可以合理地增删目录。

Maven生命周期

Maven有三个内置的生命周期:默认(default),清洁(clean)和站点(site)。在默认(default)的生命周期处理你的项目部署,将清洁(clean)的生命周期处理项目的清理,而网站(site)的生命周期处理你的项目站点文档的创建。

默认(default)的生命周期包括以下阶段(该阶段经过简化,实际上更加复杂):

  1. 验证(validate) - 验证项目是否正确,所有必要的信息可用。
  2. 编译(compile) - 编译项目的源代码。
  3. 测试(test) - 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署。
  4. 打包(package) - 采用编译的代码,并以其可分配格式(如JAR)进行打包。
  5. 验证(verify) - 对集成测试的结果执行任何检查,以确保满足质量标准。
  6. 安装(install) - 将软件包安装到本地存储库中,用作本地其他项目的依赖项。
  7. 部署(deploy) - 在构建环境中完成,将最终的包复制到远程存储库以与其他开发人员和项目共享。

在开发环境中,使用以下调用构建并将工件安装到本地存储库中。

mvn install

此命令在执行安装之前按顺序(验证(validate),编译(compile),打包(package)等)执行每个默认生命周期阶段。在这种情况下,您只需要调用最后一个构建阶段来执行,安装(install)。

在构建环境中,使用以下调用将工件清理地构建并部署到共享存储库中。

mvn clean deploy

相同的命令可以在多模块场景(即具有一个或多个子项目的项目)中使用。Maven遍历每个子项目并执行清洁(clean),然后执行部署(deploy)(包括所有之前的构建阶段步骤)。

注意:在我们开发阶段,有一些生命周期的阶段,比如验证(validate)这些,基本很少用到。只要使用关键的几个基本能满足需求。

Maven 常用命令

下面maven比较常见的一些命令。

命令 说明
mvn –version 显示版本信息
mvn clean 清理项目生产的临时文件,一般是模块下的target目录
mvn compile 编译源代码,一般编译模块下的src/main/java目录
mvn package 项目打包工具,会在模块下的target目录生成jar或war等文件
mvn test 测试命令,或执行src/test/java/下junit的测试用例
mvn install 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
mvn deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
mvn site 生成项目相关信息的网站
mvn eclipse:eclipse 将项目转化为Eclipse项目
mvn dependency:tree 打印出项目的整个依赖树
mvn archetype:generate 创建Maven的普通java项目
mvn tomcat:run 在tomcat容器中运行web应用
mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

Maven的版本规范

Maven使用如下几个要素来定位一个项目,因此它们又称为项目的坐标。

  • groudId 团体、组织的标识符。团体标识的约定是,它以创建这个项目的组织名称的逆向域名开头。一般对应着JAVA的包的结构,例如org.apache。
  • artifactId 单独项目的唯一标识符。比如我们的tomcat, commons等。不要在artifactId中包含点号(.)。
  • version 项目的版本。
  • packaging 项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

Maven有自己的版本规范,一般是如下定义 ..- ,比如1.2.3-beta-01。

Maven自己判断版本的算法是major,minor,incremental部分用数字比较,qualifier部分用字符串比较,所以要小心 alpha-2和alpha-15的比较关系,最好用 alpha-02的格式。

Maven在版本管理时候可以使用几个特殊的字符串 SNAPSHOT,LATEST,RELEASE。比如"1.0-SNAPSHOT"。各个部分的含义和处理逻辑如下说明:

  • SNAPSHOT 这个版本一般用于开发过程中,表示不稳定的版本。
  • LATEST 指某个特定构件的最新发布,这个发布可能是一个发布版,也可能是一个snapshot版,具体看哪个时间最后。
  • RELEASE 指最后一个发布版。

你可能感兴趣的:(Maven学习笔记(一):Maven概述)