Posted by Ryan on 2010/05/02
构建生命周期
Maven使用POM描述项目,将其建模成一些名词.在Maven中这些“动词”是由Maven插件包装的一些目标,它们绑定到一个构建生命周期的阶段中.当你让Maven构建一个项目的时候,你其实是让它一步步通过那些预定义的有序的阶段,并且运行所有注册到某个特定阶段的目标
Maven中有三种标准的生命周期:清理(clean),默认(default)(有时候也称为构建),和站点(site)
清理生命周期 (clean):它包含了三个生命周期阶段pre-clean,clean,post-clean
简单的运行clean:clean目标不会完整的执行该生命周期,但是指定clean阶段就能使用clean生命周期,并且逐个的经过生命周期阶段,直到到达clean阶段(可能未到post-clean阶段就停了)
指定post-clean阶段能经过完整的clean生命周期,直到post-clean阶段.
直接运行pre-clean阶段会提示:[INFO] No goals needed for project – skipping.可以在它的构建配置中,绑定了某个目标至pre-clean阶段
可以自定义Clean插件的行为去删除构建输出目录以外的文件
默认生命周期 (default):它是一个软件应用程序构建过程的总体模型。第一个阶段是validate,最后一个阶段是deploy
站点生命周期 (site):它包含了四个阶段:1. pre-site 2. site 3. post-site 4. site-deploy 默认绑定到站点生命周期的目标是:1. site – site:site 2. site-deploy -site:deploy
在上述这些生命周期里,如果某个生命周期阶段没有目标绑定在其上,运行该阶段会提示[INFO] No goals needed for project – skipping
Posted by Ryan on 2010/05/02
POM
POM是Maven中一个项目的描述性陈述;也是当Maven构建项目的时候需要理解的一份“地图”
我们已经确定了POM是描述性和声明性的,它不像Ant或者Make那样提供显式的指令,我们也注意到POM的概念不是特定于Java的
超级POM:它是Maven安装的一部分,可以在/usr/local/maven/lib中的maven-2.0.9-uber.jar文件中找到。如果你看一下这个JAR文件,你会看到在包org.apache.maven.project下看到一个名为pom-4.0.0.xml的文件
默认的超级POM定义了一个单独的远程Maven仓库,该配置可以通过一个自定义的settings.xml文件来覆盖.注意这个默认的超级POM关闭了从中央Maven仓库下载snapshot构件的功能
默认的插件仓库就是这个中央仓库。Snapshot被关闭了,而且更新策略被设置成了“从不”,这意味着Maven将永远不会自动更新一个插件,即使新版本的插件发布了。
build元素设置Maven标准目录布局中那些目录的默认值
从Maven 2.0.9开始,超级POM为核心插件提供了默认版本
所有的Maven POM都继承自超级POM
Maven开始于超级POM,然后使用一个或多个父POM覆盖默认配置,最后使用当前项目的POM来覆盖之前生成的配置结果。最后你得到了一个混合了各个POM配置的有效POM。如果你想要查看项目的有效POM,你需要运行Maven Help插件的effective-pom目标
项目版本
Maven中的版本包含了以下部分:主版本,次版本,增量版本,和限定版本号
限定版本用来标识里程碑构建:alpha和beta发布,限定版本通过连字符与主版本,次版本或增量版本隔离
如果你的版本号与格式<主版本>.<次版本>.<增量版本>-<限定版本>相匹配,它就能被正确的比较,这种比较基于主版本,次版本,和增量版本的数值,如果不标准,就会使用字符串进行比较.
Maven会将限定版本后面的数字认作一个构建版本.但构建版本的解析还是使用字符串进行比较.可以使用“alpha-02”和“alpha-10”来解决
如果一个版本包含字符串“SNAPSHOT”,Maven就会在安装或发布这个组件的时候将该符号展开为一个日期和时间值,转换为UTC(协调世界时)(没试过)
LATEST是指某个特定构件最新的发布版或者快照版(snapshot),最近被部署到某个特定仓库的构件。RELEASE是指仓库中最后的一个非快照版本.如果你处于软件开发过程中,你可能想要使用RELEASE或者LATEST,这么做十分方便,你也不用为每次一个第三方类库新版本的发布而去更新你配置的版本号。但当你发布软件的时候,你总是应该确定你的项目依赖于某个特定的版本
Posted by Ryan on 2010/04/29
该文章是我最近阅读《Maven权威指南》这本电子书以来整理的一些笔记,方便自己今后的复习和回顾
Posted by Ryan on 2010/03/27
说到maven,相信用过的人都会感叹原来部署也可以这么简单.我相信大家平时用的最多应该是mvn clean,mvn test,mvn install等命令,今天,我要向大家介绍5个暴光率不是很高,但却非常有用的命令…