美文网首页java高级课件
Maven学习笔记(一):Maven概述

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

作者: 简单一点点 | 来源:发表于2019-05-07 21:47 被阅读0次

    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有自己的版本规范,一般是如下定义 <major version>.<minor version>.<incremental version>-<qualifier> ,比如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概述

        本文链接:https://www.haomeiwen.com/subject/jhjuoqtx.html