持续集成之路-01Maven私服搭建篇
网上有很多人写Maven私服搭建的文章,大多是采用Nexus作为私服,笔者也尝试按照这些文章的步骤去搭建,但是一直没有成功,在濒临崩溃之余终于决定放弃Nexus,采用Artifactory作为私服,因为相关的文章并不多,所以笔者是一路摸索过来搭建配置成功的。
步骤1:下载安装Artifactory
到Artifactory的官方去下载,http://www.jfrog.com/download.php,笔者选择的是Artifactory OSS Version ,版本号是2.4.2,或者直接输入http://sourceforge.net/projects/artifactory/files/artifactory/2.4.2/,下载完毕后是个zip压缩文件包,将其解压到本地文件中D:\work\java_tools\artifactory-2.4.0,下载的artifactory总,已经内置了jetty容器,因此不需要配置web服务器了。
步骤2:运行Artifactory
到artifactory的安装目录下,有个bin目录,运行artifactory.bat文件
步骤3:修改artifactory配置
浏览器中输入http://localhost:8081/artifactory
即可看到artifactory的首页,右上角有个login链接,默认的用户名和密码分别为admin/password (密码就是 password)
步骤4:配置内部jar仓库
搭建私服的目的在于加快jar的下载,另一目的还在于可以管理公司内部的jar仓库,在公司内部实现jar共享,而这些jar只能传到私服上,而不是上传到外部的远程服务器上,因此,需要对maven私服进行规划
进入artifactory的admin模块
可以看到,artifactory已经为我们考虑到了这些事情,接下来看一下这些东东都是做什么用的
Local Repositories --这个表示本地(私服)中的仓库,也就是公司内部的一些jar
- libs-release-local --内部发布的jar包正式版本
- libs-snapshot-local -内部发布的jar包snapshot版本
- plugins-release-local --内部发布的maven插件正式版
- plugins-snapshot-local
- ext-release-local --由内部发布,但是jar包的来源是来自外部的,如oracle的jdbc驱动,sun的tools.jar包,方这里即可
- ext-snapshot-local
-
Remote Repositories --这个是远程jar仓库,artifactory已经为我们准备好了
- repo1
- codehaus
- java.net.m2
- jfrog-libs
- jfrog-plugins
-
Virtual Repositories --这个下面的仓库表示虚拟的仓库节点,每个节点都包含了N组localRepository和remoteRepository
- remote-repos
- libs-release
- plugins-release
- libs-snapshot
- plugins-snapshot
步骤5,导出settings.xml
artifactory给我们提供了一个很好的功能,就是根据我们配置的repository,可以给我们导出一个settings.xml文件,这样就省去了客户端链接私服配置时很多迷茫的问题,直接上图
在这个页面上有四个下拉框,分别让我们选择jar的仓库地址,snapshot仓库的地址,以及maven插件的地址,想想上一个步骤中我们提到的那3类仓库,这个页面就是让你选择客户端链接maven私服时需要链接到私服的哪个仓库上!选择默认配置即可--artifactory已经帮你考虑了这些事情!
点击右下角的Generate Settings按钮就生成了settings.xml文件的内容,把内容复制出来,保存成settings.xml把他发给你的项目组成员,运行下效果吧~
注意
默认生成的settings.xml文件中的内容,因为密码是敏感数据,所以artifactory没有把你的密码直接导出,而是需要你自己修改下的
可以将<password>里的内容修改成实际的密码,但不推荐这么做,因为这样等于把密码完全暴露出来了,好在artifactory提供了可以输入加密过的密码来进行验证的做法,从哪里获得加密后的密码字符串呢?按照下图中的链接,找到 用户admin,将其对应的password复制出来即可
步骤6修改默认的lib-release
上两个步骤中介绍过,公司内部的jar包发布到libs-snapshot-local和libs-local仓库下,默认情况下,对于snapshot版本jar包发布到artifactory上,artifactory都会为其生成一个唯一的jar的id,如crazycoder2010-1.0.0-201101121212.jar即会以发布时间戳来命名我们的SNAPSHOT版本的jar包!而对于客户端从jar仓库中依赖jar却只知道是SNAPSHOT,因此需要修改一下配置即可-按图示,将libs-snapshot-local的Maven snapshot version behavior 修改成Noneunique即可