Nexus+ivy依赖管理指南.doc_第1页
Nexus+ivy依赖管理指南.doc_第2页
Nexus+ivy依赖管理指南.doc_第3页
Nexus+ivy依赖管理指南.doc_第4页
Nexus+ivy依赖管理指南.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-I- Nexus+ivy 依赖管理指南依赖管理指南 (by attilalu) -II- 目目 录录 1 1NEXUSNEXUS 工具使用指南工具使用指南.1 1.1工具简介 .1 1.2NEXUS的下载及安装.1 1.3第一次体验 NEXUS.1 1.4NEXUS 的管理功能 .2 1.4.1创建仓库.3 1.4.2上传资源至仓库.5 2 2IVYIVY 使用指南使用指南.8 2.1简介.8 2.2IVY的安装 .8 2.2.1安装和配置 Ant 环境 .8 2.2.2安装 ivy.9 2.3简单例子 .10 -1- 1 1NEXUSNEXUS 工具使用指南工具使用指南 1.11.1工具简介工具简介 Nexus 工具其实 是一个 Maven 仓库管理器,当我们 使用 Maven 时,可 以从 Maven 中央仓库 下载所需要的构件( artifact) ,但这通常不是一个好 的做法, 比较合理的做法 应该在本地架设一个 Maven 仓库服务器,在代理 远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus 就可以满足这 样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于 简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven 仓库 管理器。 由于 Nexus 本身其实是维护一套目录存储管理机制,因此即使我们不用 Maven 也同样可以利用 Nexus 来帮助我们管理一些开发项目中的资源(比 如另人头疼的不同版本的 jar 包,不同版本的 Ant 编译文件等等)。 1.21.2NexusNexus 的下载及安装的下载及安装 Nexus 可以从 /downloads/ 下载到最新的版本, 本文的例子中用的是 1.4.0 版本。 Nexus 提供了两种安装方式,一种是内嵌Jetty 的 bundle,只要你有 JRE 就能直接运行。本文推荐的是第二种WAR 方式,你只须简单的将其 发布到 web 容器中即可使用,例如只需将nexus.war 放置 Tomcat 的 webapps 目录下后启动 Tomcat 即可(本文例子中用的 Tomcat 系 6.0.18 版 本) 。 1.31.3第一次体验第一次体验 NexusNexus 启动 Tomcat 完成 nexus.war 的部署后,我们可以通过浏览器访问 nexus 管理控制台的地址,例如: :8066/nexus。 -2- 如上图即 Nexus 的管理平台界面,主页面是个搜索界面,可以搜索许多 不同版本的开源资源,非常实用,有兴趣的话可以自己研究一下。 Nexus 有自己的权限体系,使用更多的管理功能是需要登录的,点击界 面右上方的 “Login”链接后页面会弹出一个登录输入框,输入用户名和密 码,首次安装后的默认管理员登录名和密码是:admin/admin123。 1.41.4NexusNexus 的管理功能的管理功能 登录成功后在页面左边部门可以看到比刚才登录前出现了更多的菜单项, 如图: -3- .1 创建仓库创建仓库 通常我们 用到 Nexus 最多的地方是需要 Nexus 能帮助我们管理 开发项 目中的资源,所以我们先要在 Nexus 上建立储存资源的仓库。 Nexus 的仓 库有三种: Hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。 Proxy:代理仓库,它们被用来代理远程的公共仓库。 Group:仓库组,用来合并多个 hosted/proxy 仓库。 本文着重介绍 Hosted 与 Proxy 两种仓库。 (1) 建立 Hosted 仓库 点击页面左边菜单栏的 “Repositories”链接,此时在右边的主管理界 面会出现仓库管理主界面,如下图: 仓库管理的界面布局十分简洁且描述简单易懂本文不作详细介绍,当要添加 一个新的 Hosted 仓库时点击界面上的 “Add”按钮,在按钮下拉框中点 “Hosted Repository” ,如下图: -4- 此时页面会自动新添一条 Hosted 仓库记录,在主编辑区的下半部分就 可 以就行信息输入了,如下图: 大多的设置都可以默认,输入 “Repository ID”和“Repository Name” , 例子中我们输入 intelliHost,注意 Policy 选 release,这说明它不会代理远 程仓库的 snapshot 构件,这是有原因的,远程仓库的snapshot 版本构件不 稳定且不受你控制,使用这样的构件含有潜在的风险。输入完信息后点下 方的“Save”按钮,这样我们就完成了一个Hosted 仓库的添加。 (2) 建立 Proxy 仓库 代理仓库的本意是代理远程的仓库,使得我们能第一时间从代理仓库中 获取资源,分流了远程中央仓库的压力,同时也为我们作本地集成,调试提 供了方便。 下面介绍如何新建一个 Proxy 仓库,点击 “Add”按钮,在下拉框中点 “Proxy Repository” ,此时界面上新添了一条记录,我们可以在主编辑区的 下方区域进行信息输入,如下图: -5- 在“Repository ID”和“Repository Name”里我们输入 intelliHostProxy, 现在我们来试着代理刚才我们新建的Hosted 仓库 intelliHost,我们只需在 “Remote Storage Location”一栏里输入 intelliHost 的请求地址,在本示例 中我们输入 :8066/nexus/content/repositories/intelliHost ,其 余输入框按默认, 最后点下方的 “Save”按钮即完成了新建操作。 .2 上传资源至仓库上传资源至仓库 建立完 Hosted 仓库后下面介绍如何上传资源,假设我们现在有一个 acegi 的 jar 需要上传到 intelliHost 仓库中,首先我们知道 Nexus 是一个 Maven 仓库管理器,所以遵循一定的规范我们来说是必要的,我们先规范一 下这个 jar 的文件名,全名是 acegi-security-1.0.7.jar,注意在名称和版本号 之间用“-”号连接,大版本号与小版本号间用 “.”连接,遵循这样的规 范可以为我们以后的管理省去很多不必要的麻烦。 规范了 jar 文件名后我们开始上传这个jar,首先在 Repository 管理界 面上选中我们刚才建立的 intelliHost 仓库记录,此时在主区域的下方即显 示 intelliHost 的属性信息。 如下图: -6- 选择“Artifact Upload”页签进入上传操作界面,在GAV Definition 一栏选择 GAV Parameters 方式,然后点击 “Select Artifact(s) to Upload”按钮,系统弹出一个文件上传框,选好jar 文件后界面如下图: 此时 filename 一栏显示的是本地文件路径,“Select GAV Definition Source”区域里的几个属性已经自动填上了jar 文件的信息, Packageing -7- 是 jar,Artifact 是 acegi-security,版本号 Version 是 1.0.7,组名 Group 默 认是 lib,由于是公用 jar 所以我们这里就用这个默认值,当然 也可以根据 需要对该值进行修改。 确认后点 “Add Artifact”按钮,此时页 面会在 “Artifact”框里显示我们刚才选中的 jar 文件,如下图: 最后点“Upload Artifact(s)”即完成上传。 然后我们可以打开 “Browse Storage”页签来看看现在仓库里的资源及 目录结构,如下图: -8- 可以看到我们刚才上传的 jar 的存放路径,是以 Group,Artifact,Version 来构建的分层结构,同样以后我们上传不同开源项目不同版本的 jar 包 Nexus 也以这种方式为我们存储起来。 2 2IvyIvy 使用指南使用指南 2.12.1简介简介 Ivy 可以看作是 Ant(一个构建工具)的一个扩充,一直以来Ant 缺 少自己的管理(记录,跟踪,解析和报告)项目依赖的功能,使之相比 Maven 而言有点遗憾,但许多开发人员对Ant 的熟悉和熟练程度却远远大 于 Maven,常常在两者间难以取舍,而现在ivy 的出现加好弥补了这一遗 憾。 2.22.2IvyIvy 的安装的安装 .1 安装和配置安装和配置 AntAnt 环境环境 Ivy 是依赖于 Ant 的,所以在安装 ivy 前必须先安装和配置 Ant 环境。 首先从/ 下载 Ant 的安装包(本文示例中所用的 Ant 版本是 1.7.1) ,下载有解压至本地,假设解压后的路径是C:ant。在 环境变量中加入 ANT_HOME=C:ant,并且在 path 变量中中加入 % ANT_HOME%bin,在 classpath 变量中加入 %ANT_HOME%lib,如下图: -9- 完成上述操作即完成了 Ant 的安装和配置,可以验证一下,打开cmd,输 入 ant version,如果安装成功,系统会打出Ant 的版本,如下图: .2 安装安装 ivyivy 下载 ivy /ivy/download.cgi (本文的示例中使用的为 2.1 版本) ,下载有解压,只需将里面的jar 包(如本例中的 ivy-2.1.0.jar)复 制到 ANT_HOME/lib 下即完成安装,例如本例中的ANT_HOME 路径指向 C:ant,因此只需将 ivy-2.1.0.jar 复制到 C:antlib 下即可。 -10- 2.32.3简单例子简单例子 我们开始做一个简单的例子来体验一下。首先我们创建一个简单的java project(假设项目的路径是 D:workspaceIvyTest) ,简单到项目的 src 下 仅有一个类 test. HelloIvy,并且在这个类中仅有一个HelloIvy 方法,如下: package test; import java.text.ParseException; import mons.lang.time.DateUtils; public class HelloIvy public static void main(String args) try DateUtils.parseDate(2008/12/12, new StringYYYY/MM/dd); catch (ParseException e) / TODO Auto-generated catch block e.printStackTrace(); 然后我们开始分别写 build.xml,ivy.xml,ivysetting.xml 三个配置文件 , 我们先来写 build.xml,如下: -11- retreive dependencies with ivy generates a report of dependencies compile and run the project -12- clean the project clean the ivy cache 下面解释一下以上配置,在 project 定义中引入 ivy,即加入 xmlns:ivy=antlib:org.apache.ivy.ant,然后我们就可以在 build.xml 里调用 ivy 的 target 了。在示例的 build.xml 里,resolve target 表示调用 ivy 来作 依赖处理, report target 表示产生 ivy 报告,clean-cache target 表示调用 ivy 来清理 ivy 产生的缓存 ,其实在示例的 build.xml 中我们只用到了 resolve target,注意看在 run target 里定义了 depends 属性是依赖于 resolve target 的,这样 当 ant 在执行 run target 前将先执行 resolve target。Build.xml 中的其它部分请参考 ant 的语法这里不作冗述。 完成了 build.xml 后我们再来写 ivy.xml,在写 ivy.xml 前我们先把项 目中要用到的一个 jar(commons-lang-2.3.jar)上传至 Nexus 上的 intelliHost 仓库(具体的操作方法参见第一章的相关部分) ,然后开始写 ivy.xml,内容如下: 请注意这项, 该项配置定义了 项目中依赖的 jar 包,具体属性含义在配置 ivysetting.xml 时再细讲 。在配置完 ivy.xml 后我们也可以定义一个 perties 来设置 一些我们的变量, perties 与 ivy.xml 的关系类似于 perties 与 build.xml 的关系。 Ivy.xml 里只是配置了项目中依赖的jar 的名称,版本 ,而如何获取这 个 jar 需要在 ivysetting.xml 里配置,内容如下: 注意 artifact 配置项, pattern 定义了获取方式是 http:/localhost:8066/nexus/content/repositories/intelliHost/organisation/mo -14- dule/revision/artifact-revision.ext,也就是当 ivy 执行时会去这 个地 址搜索 jar 包,对比 ivy.xml 中 dependency 的配置以及 Nexus 上的规范列 出下面这个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论