• note:maven 简介



    1.为什么要使用Maven,使用Maven有什么好处 
    maven是一个可以帮助你进行项目编译、文档管 理、报告管理、包依赖管理、SCMs管理、发布等的工具.
    它可以协助你完成以下工作:
    1.快速创建一个工程文件
    2.几乎不用做任何设置, 可以立即进行编译、测试、打包等工作。以前用Ant的时候,也可以很方便的做这些工作,但是写Ant的build.xml文件是一件很烦琐的事情。
    3. 创建项目文档非常容易,可以自动生成一个web site,记录你的项目情况、版本信息、两个版本之间的change list等。
    4.非常方便 的远程发布、scm(cvs)管理功能。
    5.依赖管理功能

    2 有maven前后对比
     有maven之前
    我们在做多个不同的Java项目时,每个项目所用到的库 文件基本都是大同小异的,通常的做法是每个项目下面都会复制一份这些库文件,甚至会把这些库文件都提交到cvs上去,这样带来的问题不仅是增大了项目占用 的硬盘空间,而且也使包管理很混乱,当我需要在另外的机器上进行工作时,我通常需要重新建立我的工程文件。
    搭建项目的过程,不仅容易出错,而且很耗时.
     有了maven
    项目所有的依赖的都在项目根目录的pom.xml文件中声明,maven会替你管理. 编译,测试,打包,发布,生成文档,都只需要一句命令.
    一个标准的maven web项目的目录结构
    src目录是开发目录
    target目录是存放编译生成结果的
    src/main目录下是项目运行所需所有代码
    src/test目录下是存放测试代码的,项目发布时,不包括.
    src/main/java/目录存放所有java代码
    src/main/resources/目录存放各种配置文件,资源文件
    src/main/webapp/目录存放web目录所有内容

    3.maven重要概念以及工作原理
    a.生命周期
    一个项目从创建到发布的过程,maven将各个阶段要做的事都提炼出来.
    下面是默认生命周期的各个主要阶段:
    validate:验证项目是否正确,所有必需的信息是否可用。
    compile:编译项目中的代码。
    test:用相关的单元测试框架测试编译后的代码,这些运行的测试并不会随项目打包和布署。
    package:将编译后的代码打包成相应的格式文件,如jar包。
    integration-test: 如果需要在一个综合环境中运行我们的测试,这个阶段将会运行和布署项目到该环境中。
    verify: 检查项目的包是否正确和符合要求。
    install:将包安装到本地maven仓库,可以让其他项目作为依赖使用该包。
    deploy:将包发布到远程的maven仓库,并提供给其他开发者使用。
    site:pre-site,site,post-site,site-deploy  生成文档
    clean:pre-clean,clean,post-clean   清理target目录
    default生命周期的各个阶段将会按顺序执行来完成这个生命周期。
    例如你直接敲 mvn package mvn会 validate ,compile,test,package 依次执行一遍.见下图
     
    b.插件
    maven是由一堆插件构成的,每个插件可以有不止一个goal(目标),但有一个默认目标
    参考上图 你敲 mvn package 在它调用的是war插件的war目标.
    我们最常用的 maven命令 mvn tomcat:run  (调用tomcat插件的run目标)
    c.仓库
    第一次运行控制台运行maven命令,会在系统的用户目录下新建一个.m2文件夹
    .m2文件夹下是repository文件夹,这个文件夹就是本地仓库.
    一个maven项目在编译时会首先从本地仓库找,看有没有需要的jar包,
    如果没有会从几个远程仓库下,所以刚装maven会一直提示在下东西.
    只要将一个有很多包的本地仓库目录替换掉这个目录,maven就不会重新下了.
    d.pom.xml文件
    pom.xml文件描述项目的所有信息,项目属于哪个组织,项目名称,版本,依赖哪些jar包,使用哪些插件
    关于pom.xml文件的编写参见 howto:pom文件编写.
     



     



  • 相关阅读:
    第三章 kubernetes核心原理
    Jmeter
    Docker 入门学习
    第二章 Kuberbetes实践指南
    第一章 Kubernetes入门
    java中的引用与ThreadLocal
    Disruptor极速队列
    Redis设计与实现——单机数据库的实现
    Redis设计与实现——数据结构与对象
    python装饰器
  • 原文地址:https://www.cnblogs.com/HelloCoding/p/2327498.html
Copyright © 2020-2023  润新知