- 阐述
2**pom.xml 详解** - maven 版本控制
- 私库(私服)介绍
- 和maven类似的项目构建工具
阐述
是一个项目对象模型,用来构建整个项目和对象管理
pom.xml 详解
特征
一个项目以group:artifactId :version 成为一个唯一的项目
group
项目标示的约定,它以创建这个项目的组织名称的逆向域名
可以有.号;例如 以org.apache开头的groupId
artifactId
在geoupId 下的一个单独项目标识符,不要在artifactId 中有.号
version
版本号,打包项目时会出现在项目名称后面
packaging
项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。
classifier
分类器 需要把一个项目,生成两个版本的
发布版本
SNAPSHOT 意为快照,当前版本是开发版本
LATEST 指某个特定构件的最新发布,这个发布可能是一个发布版,也可能是一个snapshot版,具体看哪个时间最后。
RELEASE 说的是最后一个版本
compile
编译范围
runtime
运行时范围
maven 的组成
可以把项目分成几个部分,项目源代码 main/java 单元测试用例,text/java ,依赖的插件 Maven Dependencies
maven的多项目管理
父子项目模式,子项目pom.xml 里继承父项目信息
继承不是唯一的配置文件共用方式,
属性
maven 版本控制
1、解读 1.2.3-beat-4.jar 包名分析
“ 1 ” : 表示该版本的第一个重大版本
“ 2 ” : 表示这是基于重大版本的第二个次要版本
“ 3 ” : 表示该次要版本的第三个增量
” beat-4” : 表示该增量的一个里程碑
2、主干、分支、标签
主干:项目的主体,从初始到当前项目的活动状态, 从这里可以获得项目最新的源代码和几乎所有的变更历史
从主干的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下,在这里进行重大的bug修复或者实验性质的开发,
用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,也就是通常说的发布状态
3、自动化版本发布(Maven Release Plugin)
三个目标
release: prepare, release: rollback, release: perform
maven 坐标
是为了更加精确的获取插件位置
groupId artifactId(项目打包过程中以这个为开头) classifier不能直接定义
maven仓库分类
本地库
作用
maven本地存储构建的地方
更改配置用户范围的本地仓库
先在/.m2/目录下创建settings.xml文件,然后在~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址
更改配置全局范围的本地仓库
在M2_HOME/conf/settings.xml中更改配置,更改配置的方法同上
注意
此时更改后,所有的用户都会受到影响,而且如果maven进行升级,那么所有的配置都会被清除,所以要提前复制和备份M2_HOME/conf/settings.xml文件
故:一般情况下不推荐配置全局的settings.xml
远程仓库
中央仓库
阐述
maven安装时就把中央仓库默认成本低仓库,而且所有的pom文件都继承超级pom
私库(私服)
作用
(1)私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。
(2)当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。
特性
1、节省自己的外网带宽:减少重复请求造成的外网带宽消耗
2、加速Maven构件:如果项目配置了很多外部远程仓库的时候,构建速度就会大大降低
3、部署第三方构件:有些构件无法从外部仓库获得的时候,我们可以把这些构件部署到内部仓库(私服)中,供内部maven项目使用
4、提高稳定性,增强控制:Internet不稳定的时候,maven构建也会变的不稳定,一些私服软件还提供了其他的功能
5、降低中央仓库的负荷:maven中央仓库被请求的数量是巨大的,配置私服也可以大大降低中央仓库的压力
主流的maven私服
Apache的Archiva
JFrog的Artifactory
Sonatype的Nexus
其它公共库
远程仓库配置
引入新的配置元素: 子元素声明一个或者多个远程仓库。
元素:表示更新的频率,值有:never, always,interval,daily, daily 为默认值
元素:表示maven检查和检验文件的策略,warn为默认值
远程仓库认证
输入用户名和密码
这里的id必须与POM中需要认证的repository元素的Id一致
如何将生成的项目部署到远程仓库
(1)在pom中引入一个新元素 里面包涵两个子元素 repository和snapshotRepository, 前者表示发布版本构件的仓库,后者表示快照版本的仓库
(2)这两个元素都需要配置 id(该远程仓库的唯一标识),name,url(表示该仓库的地址)
(3)向远程仓库中部署构件,需要进行认证。配置同上
Maven在仓库中的存储路径
基于groupId的装备路径,把句点名称换成/ 符合 就是将 “.” 转换成 “/” ; example: org.testng —>org/testng
和maven类似的项目构建工具
Make 历史 1977 年 bell 实验室创建
架构 1、由一个命名为makefile脚本文件驱动,自定义语法格式,再组成一系列规则
2、可以利用系统本地命令
结构 目标>依赖>命令
缺陷 不能垮平台,不符合java目标、而且语法表达繁琐,可能因为一个tab 就构建失败
Ant
作用 java 项目构建工具
历史 最开始是tomcat创始人 James Duncan Davidson 动机是因为受不了MakeFile的语法格式,
优点 使用XML构建脚本 build.xml ,这样就实现了跨平台,符合java规范
结构 目标>依赖>命令
缺陷虽然可能跨平台,但是需要大量的手动管理依赖,
暂时总结到这里,还有续篇私服(nexus)搭建