对maven的深入理解《二》

1.maven与ant的基本区别:

  1. Maven作为一个构建工具只要编写比Ant所需少得多的脚本就能实现同样的构建。
  2. Maven还有很多Ant没有的高级特性,例如依赖管理等,这一切使得Maven不仅是构建工具,更是项目管理工具,并越发流行起来。

2.Maven拥有三套相互独立的生命周期,它们分别为clean,default和site:

  1. Clean Lifecycle在进行真正的构建之前进行一些清理工作。
  2. Default Lifecycle构建的核心部分,编译,测试,打包,部署等等。
  3. Site Lifecycle生成项目报告,站点,发布站点。

3.各个生命周期的关系:
maven各个生命周期相互独立,但是对应的生命周期的各个阶段是相互依赖的。比如:clean和default之间是独立的,但是clean的各个阶段是相互依赖,并依次执行的。

  1. clean生命周期

    clean生命周期的目的是清理项目,它包含三个阶段:

    1)pre-clean 执行一些清理前需要完成的工作。

    2)clean 清理上一次构建生成的文件。

    3)post-clean 执行一些清理后需要完成的工作。

  2. default生命周期

    default生命周期定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,它包含的阶段如下:

    1) validate 验证项目是否正确和所有需要的相关资源是否可用

    2) initialize 初始化构建

    3) generate-sources

    4)process-sources 处理源代码

    5) generate-resources

    6)process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

    7) compile 编译项目的主源代码

    8) process-classes

    9)generate-test-sources

    10)process-test-sources 处理项目测试资源文件

    11)generate-test-resources

    12)process-test-resources 处理测试的资源文件

    13)test-compile 编译项目的测试代码

    14)process-test-classes

    15)test 使用单元测试框架运行测试,测试代码不会被打包或部署

    16)prepare-package 做好打包的准备

    17)package 接受编译好的代码,打包成可发布的格式

    18)pre-integration-test

    19)integration-test

    20)postintegration-test

    21)verify

    22)install 将包安装到Maven本地仓库,供本地其他Maven项目使用

    23)deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用

  3. site生命周期

    site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:

    1)pre-site 执行一些在生成项目站点之前需要完成的工作

    2)site 生成项目站点文档

    3)post-site 执行一些在生成项目站点之后需要完成的工作

    4)site-deploy 将生成的项目站点发布到服务器上

4.Artifact & Repositories:
1).Artifact:一个项目将要产生的文件,可以是jar文件,源文件,二进制文件,war文件,甚至是pom
2).Repositories是用来存储Artifact的

5.repositories和pluginRepositories和distributionManagement的异同

  1. 构件可以分为两类
    一类是被其他构件依赖的构件(dependencies),这也是Maven库中主要的构件。另一类是插件(plugins),这是一种特殊的构件.
    Repositories:专门用于构件在远程库的存储
    pluginRepositories:由于插件的特殊性,所以插件会和构件分开存储
    distributionManagement:包含和,
    前者:部署后发布的库
    后者:更侧重于开发过程中发布的库(快照版)
    注:Repositories和pluginRepositories可设置在profile中,也可设置在profile外,project内:区别:前者:更侧重于工程中某个环境的库,后者:是适用于整个工程的库
  2. 在pom.xml或settings.xml中设置,往往需要提供一个的如下信息:
    id,库的ID
    name,库的名称
    url,库的URL
    releases,库中版本为releases的构件
    snapshots,库中版本为snapshots的构件

根据构件的版本,可以将构件分为releases类型的构件和snapshots类型的构件。

对于一个构件,其版本的变化是否会引起库中更新该构件呢?则需要根据库的或设置。和的设置可以参数一致

enabled,是否支持更新
updatePolicy,构件4种更新的策略,可选值有daily, always, never, interval:X(其中的X是一个数字,表示间隔的时间,单位min),默认为daily
checksumPolicy,校验码异常的策略,可选值有ignore, fail, warn

6.mvn install 和mvn clean和mvn package和mvn deploy的区别

Mvn package:会将工程打成jar包(看pom),并放在target目录下
mvn install:会将工程打成jar包(看pom怎么配),并放于m2的目录下以及target目录下
Mvn deploy:会将工程打成jar包(看pom),并放于m2和target中,且部署到远程服务器
Mvn clean:会删除target目录

猜你喜欢

转载自blog.csdn.net/sx1119183530/article/details/82348430