《(仓库管理)设置Maven组件库仓库》由会员分享,可在线阅读,更多相关《(仓库管理)设置Maven组件库仓库(24页珍藏版)》请在金锄头文库上搜索。
1、设置Maven仓库1. 介绍Maven是Java开发者中流行的构建工具,Maven的好处之一是可以帮助减少构建应用程序时所依赖的软件构件的副本,Maven建议的方法是将所有软件构件存储于一个叫做repository的远程仓库中。Maven会从ibiblio.org中的公用仓库中同步构件,这个公用仓库下载缓慢、不稳定,并且不包含一些构件的最新版本,而且不能上传团队私有的构件。通过设置内部Maven仓库,团队可以更有好地利用Maven仓库的优势并且克服使用ibiblio上的仓库时的缺点。本文着眼于Maven仓库工具应提供的一些功能,列出了选择Maven仓库工具的标准,说明了使用Artifactor
2、y设置Maven仓库的相关步骤。在Linux和Windows中设置Maven仓库的过程是相同的,少数不同点在文中已经用高亮显示,本文列出了与这个Maven仓库的使用有关的POM文件的范例,用截图来向用户阐述如何设置Maven仓库,Maven和artifactory配置范例也有列出。1.1 背景知识本文假定读者熟悉以下的概念和技术:l Maven 2 l J2EE web 服务器部署过程(e.g. 在Tomcat中部署Web应用程序) l XML 1.2 Maven仓库的目的 Maven仓库的目的是作为团队内所使用的所有软件构件的内部私有构件仓库,将Maven构件(jar和pom)存储到一个专门
3、的Maven仓库比将它们存储到版本控制系统中更有优势,这是因为:l 构件(jar)是二进制文件,不属于版本控制系统,版本控制系统在处理文本文件方面比较好l 保持较小的版本控制数据库l Checkout、update和其他版本控制的操作可以更快1.3 建立内部私有仓库的优势: l 减少可能的版本冲突 l 减少首次构建时需要的手动干涉 l 中央仓库包含所有依赖的软件构件,引用单一的中央仓库比引用多个独立的本地库要好 l 使用内部仓库做clean构建时会快些,因为Maven构件是从内部服务器而不是从因特网上的ibiblio服务器获取。 1.4 Maven构件库的类型 l 本地仓库位于开发者的机器,由
4、开发者维护,它从位于home/.m2 目录的settings.xml文件中定义的Maven仓库上同步,如果在pom.xml或setting.xml文件中没有设置内部私有远程仓库,那么开发者机器上的这个本地仓库就会从ibiblio.org 上的公用Maven仓库上同步。 l 内部私有远程仓库这是我们将要设置的仓库,我们将改变maven 的pom.xml或settings.xml文件来使用这个库。 l 外部公用远程仓库这是在ibiblio.org上的外部公用仓库,默认情况下,Maven从这个仓库上同步。 l2.Maven仓库概览2.1 没有Maven仓库下的开发环境2.2 具有团队内部远程仓库的开
5、发环境3. 本教程Maven仓库的用例介绍l 在内部仓库中创建2个子库 l Ibiblio 缓存Ibiblio-cache 用于存储从ibiblio.org中下载的构件,可以公开访问,它将从外部的ibiblio仓库中同步 l 内部仓库internal-maven-repository用于存储团队内部的构件,它不与任何外部仓库同步,是团队专有的构件库 l 可以创建另一个子仓库,这是可选的,用于存储那些公用的但是在ibiblio上暂时没有的构件,例如一些构件的新最版本,这个仓库不与内部仓库同步。我们可以称它为第三方3rd-partyl 浏览远程库,最好是通过一个web浏览器l 在仓库中搜索构件 l
6、 从版本控制系统中下载代码,修改settings.xml指向内部仓库并且做一次没有任何手工干涉的clean构建l 向仓库中安装一个构件的新版本l 向仓库中大批导入构件l 从仓库中大批导出构件l 手动备份仓库,设置定时自动备份任务4. Maven仓库工具的选择标准理想的Maven仓库工具应该:l 开放源码并且免费 l 提供管理工具 l 提供仓库浏览器最好是web浏览器而不是桌面应用程序 l 可以部署到标准web服务器中例如Apache或Tomcat l 创建、编辑、删除子库的能力 l 批量导入/导出的工具,用来向构件库或从构件库移动构件 l 访问控制工具和匿名只读访问 l 安装和使用简单 l 备
7、份功能 l 问题追踪,论坛或其他独立的信息来源 l 活跃的社区/开发者,这样产品才能改进,bug才能修正5. 不同Maven仓库工具的比较一些流行且免费的Maven仓库工具有:l 标准Maven代理codehaus http:/maven-proxy.codehaus.org/ l Dead simple Maven Proxy (DSMP) - http:/www.pdark.de/dsmp/ l Proximity - http:/proximity.abstracthorizon.org/ l Artifactory - http:/www.jfrog.org/sites/artifac
8、tory/latest/ 下面列出了一个比较:codehausDSMPProximityArtifactory管理工具否基本是是构件库浏览器基本否是是部署到标准Web服务器是,但不可配置否是是(与Jetty绑定,支持Tomcat)子库管理是是是是批量导入/导出构件否否否是安装使用简单是是(从代码构建)是是(AJAX界面)备份功能否否否是(使用quartz和cron表达式)问题追踪JIRA,IRC否Wiki issues TrackerJira issues Tracker(良好的在线文档)研究过以上所有产品之后得出结论,Artifactory 拥有我们要的所有标准。Proximity看样子也有
9、许多我们要的特性,我们将着眼于Artifactory 的使用。关于Artifactory 的其他方面:l 符合我们的需求 l Apache 2.0 许可 l 运行于JDK 1.6和Tomcat 6。Artifactory以war文件形式部署到Tomcatl 使用Derby数据库来存储构件,数据以一个已发布的知名的格式存储l 所有构件可以被批量导出到本地库然后导入到其他库,因而易于将构件从一个仓库工具移到另一个,它也使得Maven库的升级非常容易 l 兼容Java Content Repository 标准(JSR-170)。 l 使用Lucene作为搜索引擎,仓库可以被索引和重新索引 l Aj
10、ax界面l 易于定制界面 l 使用JIRA作为问题追踪系统6. 设置Maven仓库6.1 软件需求 l Artifactory从http:/www.jfrog.org/sites/artifactory/latest/下载和安装,当前最新版本是1.2.1-rc1,Artifactory是一个可以被安装到Tomcat中去的Web应用程序 l JDK 1.6 更多信息请参阅http:/www.jfrog.org/sites/artifactory/latest/install.html l Tomcat 6 6.2 目录结构 下载和解压artifactory。目录结构如下: 这些目录是:l bac
11、kup 仓库的备份,可以使用cron表达式设置备份策略,quartz定时调度程序在指定的时间里运行备份任务,备份时间间隔在ARTIFACTORY_INSTALLATION_FOLDER/etc/artifactory.config.xml文件中指定 l bin 内置jetty 服务器的运行批处理文件 l data 包含derby数据库文件,如果你想以一个空的构件库开始,可以删除这个目录中的所有内容,在全新的artifactory 安装中,这个目录是空的。 l etc artifactory 的配置文件,有artifactory.config.xml 、jetty.xml 和log4j.,pro
12、perties l lib 包含所有依赖的jar文件 l logs 日志文件l webapps 包含war文件,它可以被拷贝到Tomcat中安装。6.2 在Tomcat 6中部署 部署/webapp目录中的war文件到 /webapps目录中,在jdk1.6和Tomcat 6环境下不需要改变tomcat的配置,Tomcat 6会检测并部署它。当这个Web应用程序被部署的时候,需要这些信息:l 保存构件的数据库的位置 l artifactory 的xml配置文件的位置 l 备份目录的位置 可以在一个配置文件中指定所有3个信息,在Tomcat启动期间我们只需要指定artifactory的安装目录,
13、artifactory会计算出其余的信息。可选的方法是使用jdbc设置好derby数据库的连接并且在Web应用程序中配置好artifactory (通过在Web应用程序中包含artifactory.config.xml文件)。不管怎样,这个方法是简单的。artifactory 安装目录的位置可以被设置为一个环境变量,在Linux中,用.bash来输出artifactory 安装目录的位置的脚本是:export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1在Windows中,可以添加到Tomcat启动选项中:
14、6.3 设置Maven仓库 建议的方法是在我们的Maven仓库中创建3个库(或子库),它们是:l 内部私有仓库private-internal-repository:这个仓库包含仅在团队内使用的构件,它们由开发者手动上传,这个仓库不与ibiblio 中的远程仓库同步,因为这个仓库(或子仓库)中的构件是团队私有的。 l 第三方库3rd-party:这个仓库包含公有的但不在ibiblio服务器上的构件,例如,最新版本的尚不在ibiblio的组件或jdbc驱动。这个仓库不与ibiblio 同步,因为ibiblio 没有这些jar。 l Ibiblio 缓存Ibiblio-cache:这个仓库与ibiblio 仓库同步,它是ibiblio 上的构件的缓存。 设置这三个仓库,需要修改/etc/artifactory.config.xml中的配置:config xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns=http:/artifactory.jfrog.org/xsd/1.0.0 xsi:schemaLocation=http:/artifactory.jfrog.org/xsd/1.0.0 http:/www.jf