对maven的深入理解《二》

1.maven与ant与make的基本区别:

  1. 最早出现的是make的makeFile,但是强依赖与编写的操作系统,不是跨平台,于是ant出现,因为ant用java写的,所以ant跨平台了,但是ant和make一样都是过程式开发,在不同的工程中重复性劳动多,于是maven出现,因为maven是声明式开发,有插件,不需要做那么多的复制粘贴
  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目录

Make命令   在make命令后不仅可以出现宏定义,还可以跟其他命令行参数,这些参数指定了需要编译的目标文件。其标准形式为:   target1 [target2 …]:[:][dependent1 …][;commands][#…]   [(tab) commands][#…]   方括号中间的部分表示可选项。Targets和dependents当中可以包含字符、数字、句点和"/"符号。除了引用,commands中不能含有"#",也不允许换行。   在通常的情况下命令行参数中只含有一个冒号":",此时command序列通常和makefile文件中某些定义文件间依赖关系的描述行有关。如果与目标相关连的那些描述行指定了相关的command序列,那么就执行这些相关的command命令,即使在分号和(tab)后面的aommand字段甚至有可能是NULL。如果那些与目标相关连的行没有指定command,那么将调用系统默认的目标文件生成规则。   如果命令行参数中含有两个冒号"::",则此时的command序列也许会和makefile中所有描述文件依赖关系的行有关。此时将执行那些与目标相关连的描述行所指向的相关命令。同时还将执行build-in规则。   如果在执行command命令时返回了一个非"0"的出错信号,例如makefile文件中出现了错误的目标文件名或者出现了以连字符打头的命令字符串,make操作一般会就此终止,但如果make后带有"-i"参数,则make将忽略此类出错信号。   Make命本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准形式为:   Make [flags] [macro definitions] [targets]   Unix系统下标志位flags选项及其含义为:   -f file  指定file文件为描述文件,如果file参数为"-"符,那么描述文件指向标准输入。如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在linux中, GNU make 工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索 makefile文件。   -i   忽略命令执行返回的出错信息。   -s   沉默模式,在执行之前不输出相应的命令行信息。   -r   禁止使用build-in规则。   -n   非执行模式,输出所有执行命令,但并不执行。   -t   更新目标文件。   -q   make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。   -p   输出所有宏定义和目标文件描述。   -d   Debug模式,输出有关文件和检测时间的详细信息。   linux下make标志位的常用选项与Unix系统中稍有不同,下面我们只列出了不同部分:   -c dir   在读取 makefile 之前改变到指定的目录dir。   -I dir   当包含其他 makefile文件时,利用该选项指定搜索目录。   -h   help文挡,显示所有的make选项。   -w   在处理 makefile 之前和之后,都显示工作目录。   通过命令行参数中的target ,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值