maven实战-----读书笔记

第六章 Maven仓库

1.仓库的分类:仓库分为本地仓库,远程仓库,中央仓库,私服。

本地仓库:本机上的maven仓库,setting配置本地仓库路径,如下图,下载下来的jar包都会存储在D:\java\repository中。

远程仓库:本地仓库好比书房,当想要读某本书的时候,会先在本地仓库里面找有没有,如果没有,则去书店购买,远程仓库就好比这书店,当我买到想读的书之后,就会保存在书房中,下回想在读该本书,就直接去书房找,本地仓库只有一个,但远程仓库可以配置多个。
中央仓库:maven会默认一个可用的远程仓库,不需要配置,maven会自动识别这个仓库,这个仓库就是中央仓库。

私服:私服是一种特殊的远程仓库,他是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的maven用户使用,当maven需要下载依赖jar包的时候,他会请求私服,如果私服不存在,他会再去外部的远程仓库下载,下载完毕存放到私服上,下次使用则请求的是私服,另外,我们也可以将一些公共的服务作为依赖上传至私服,项目中多个团队人使用的时候,就不需要相互拷贝,直接下载就可以,他的好处是节省自己外网的宽带,加速maven构建,部署第三方插件(就是公共服务只对内开放,属于公司自己的业务jar依赖),提高稳定性,增强控制,降低中央仓库的负荷。

2.远程仓库的配置,当中央仓库无法满足项目的需求,可能项目需要的依赖在另外一个远程仓库,入JBoss Maven仓库,这时,可以在POM中配置该仓库。

在repositories中,可以申明一个或者多个远程仓库,该例子中,申明了一个id为jboss,名称为JBoss Repository的仓库,任何一个仓库申明的id必须是唯一的,maven自带的中央仓库id使用的是central,如果其他仓库申明也使用了该id,则会覆盖中央仓库的配置,该配置中,releases和snapshots比较重要,他们用来控制maven对于发布版构件和快照版构件的下载,该例子中realeases的enable为true,表示支持JBoss仓库的发布版下载支持,snapshots为false,表示关闭JBoss仓库的快照版下载支持,根据该配置,maven则只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。layout的值是default,表示仓库的布局是maven2及maven3的默认布局而不是maven1,对于releases和snapshots来说,他还有另外两个子元素,updatePolicy和checksumPolicy,updatePolicy代表更新频率,默认的daily一天一次,never为从不检查更新,always为每次构建时都检查一次,interval:X  表示每隔X检查更新一次。元素checksumPolicy用来配置maven检查校验和文件的策略,当构件被部署到maven仓库中,会同时部署对应的校验和文件,当下载构件时,maven会验证校验和文件,当校验失败时,当checksumPolicy的值设置为warn,maven会在执行构件时输出警告信息,fail,maven遇到校验和错误时就让构建失败,ignore,使maven完全忽略校验和错误。

3.远程仓库的认证

大部分远程仓库无需认证就可以访问,有时候出于完全考虑,需要提供认证信息才可以访问一些远程仓库,比如私服。

扫描二维码关注公众号,回复: 7111167 查看本文章

4.部署至远程仓库

私服一大作用是部署第三方文件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件,这些构件我们需要部署到私服上,供其他团队成员使用,编辑项目中的pom.xml,配置如下,其中注意的是id应该与setting.xml中一个server元素中的id相同,且用户名,密码都需要正确匹配。

上传命令:mvn clean deploy,maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则会部署到快照版本仓库地址,否则会部署到发布版本仓库地址,如下图是一个部署一个快照版本的输出:

5.快照版本

这样的配置就是一个快照版本,快照版本是不稳定的半成熟品,当开发稳定之后,将version改成1.0.0,则此时变成了发布版本。

6.镜像

如果镜像X可以提供仓库Y存储的所有内容,那么久可以认为X是Y的一个镜像,镜像常见的用法就是配合私服使用,由于私服可以代理任何外部的公共仓库,包括中央仓库,对于组织内部而言,使用一个私服地址就等于使用了所有需要的外部仓库,可以将配置集中到私服中,从而简化maven的配置,如下图所示,就是一个maven私服的配置。

第七章 Maven生命周期与插件

1.Maven的生命周期就是为了对所有的构建过程进行抽象和统一,maven从大量项目和构建工具中学习和反思,总结了一套高度完善的,易扩展的生命周期,这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有的构建步骤。

maven的生命周期是抽象的,意味着生命周期本身不做任何实际的工作,在maven的设计中,实际的任务(如编译源代码)都由插件来完成,这种思想和设计模式中的模板模式相似,模板方法在父类中定义算法的整体结构,子类可以通过实现重写父类的方法来控制实际的行为,保证了算法有足够的可扩展性,有可以严格控制算法的整体结构。,如下的模板方法能很好的体现maven生命周期的概念:

这段代码非常简单,build()方法定义了整个构建的过程,依次是初始化,编译,测似,打包(由于package与java关键字冲突,这里使用了单词packagee),集成测试,部署,但是这个类并没有具体现实初始化,编译,打包,集成测试,部署,由子类去实现。

2.三套生命周期

初学者往往以为Maven的生命周期是一个整体,Maven拥有三套相互独立的生命周期,他们分别是clean,default,site,clean生命周期的目的是清除项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。

3.命令行与生命周期

4.插件目标

5.插件绑定

猜你喜欢

转载自www.cnblogs.com/hejj-bk/p/11419769.html