Maven--构建企业级仓库(二)
安装Nexus
下载:http://www.sonatype.org/nexus/
安装:安装的方式有很多种,我只讲一种,是用war包形式部署,其他的也非常简单,读者可自行尝试。首先,读者需要下载nexus的war包,这个我相信你应该找的到,下载后,将此war包拷贝到Tomcat的webapps下,就可以了。然后启动Tomcat,在浏览器输入网址:http://localhost:9999/nexus;就可以看到界面了,此处注意端口号,我的Tomcat的端口号是9999,你的你自己知道哦。如果此时你还看不到界面,那说明你的JDK版本和nexus有些冲突,我一般jdk1.6的选择nexus1.8。如果您安装的是最新的版本,那在nexus-2.X.X\bin\jsw\conf\wrapper.conf文件中的wrapper.java.command=D:\Java\jdk1.7.0_05\bin\java.exe。
认识Nexus
读者可先花几分钟时间仔细观察展现在你面前的页面都有哪些东西,接下来我们就开始配置nexus,先登录,点击右上角的logIn,默认用户密码为:admin,admin123,然后我们点击左侧栏Repositories,进入仓库设置,如下图:
再来看右边的画面,右边上半部分是列出来的repository,如下图:
我们先来关注一下Type这一列,有group、hosted、proxy、virtual几种,virtual忽略不说,介绍一下下面几种库的类型:
Proxy:是远程仓库的代理。比如说在nexus中配置了一个centralrepository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在centralrepository是获取不到的,就需要手工上传到hosted里。
Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom(setting)中配置多个地址,只要统一配置group的地址就可以了。
可以看到,Nexus已经建好了几个仓库。这些仓库有代理仓库,宿主仓库等,可以满足代替Maven中央库的功能 。一般应用下,我们就不用自己再去建立仓库了。
配置中央仓库
Maven central是Maven的中央仓库,点击它并选择configuration标签栏,我们会看到下面的页面:
可以看到中央仓库也是一个代理仓库,他代理谁的呢?请看Remotestorage location,这里是远程仓库的地址,为了提高代理速度,你可以修改为国内的镜像地址。默认值是http://repo1.maven.org/maven2/。
Override local storage location:在这个选项你可以配置你的Nexus本地仓库的存放地址,用来覆盖其默认的存放地址。
Maven central是一个比较大的代理仓库,一般是没有必要自己创建库的,如果你需要添加的一个代理仓库,那么可以在点击左侧栏里面的Repositories,然后右边的页面点击add-> add proxy repository即可。通常情况下,使用预设的代理仓库已经能够满足大部分项目的需求了,只有在特殊需求的情况下才会参加代理仓库。
Download remote indexes:这里配置是否下载远程索引文件,模式是false,建议配置为true,这样设置以后,Nexus会自动从远程中央仓库下载索引文件,我们便可以通过索引文件来搜索我们需要的构件。这里有个问题,索引更新慢的要死,读者可以采用理想方式,先下载索引包:nexus-maven-repository-index.zip,然后按照此文章照做就可以了。真是土到家了!
中央仓库就是解决大部分jar包的问题,但是我们在实际项目中会分很多模块(后面会讲),会有很多中央库没有的jar包,那怎么来管理呢,接下来我们讲本地仓库的配置(也就是宿主仓库)。
配置宿主仓库(本地仓库)
我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases,Snapshots, 3rd Party.如下图:
分别讲一下这三个预置的仓库都是做什么用的:
Releases:这里存放我们自己项目中发布的构建,通常是Release版本的,比如我们自己做了一个helloworld的项目,生成的构件为helloworld.war我们就可以把这个构建发布到Nexus的Releases本地仓库。
Snapshots:这个仓库非常的有用,它的目的是让我们可以发布那些非release版本,非稳定版本,比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用,因为你的同伴正在依赖你的模块开发,那么这个时候我们就可以发布Snapshot版本到这个仓库,你的同伴就可以通过简单的命令来获取和使用这个临时版本.。
3rd Party:第三方库,你可能会问不是有中央仓库来管理第三方库嘛,没错,这里的是指可以让你添加自己的第三方库,比如有些构件在中央仓库是不存在的。比如你在中央仓库找不到Oracle的JDBC驱动,这个时候我们就需要自己添加到3rdparty仓库。
配置Maven仓库组
我们一个项目不止会用到中央仓库,也会用到宿主仓库,因此仓库组把他们做一个整合,对外提供唯一的地址,我们在客户端调用的时候就配置一个地址,很方便。见下图:
注意:1.是从右往左添加,别搞错了;2.仓库的添加顺序直接决定了构件的下载顺序,换句话来说我们应该把需要从中央仓库或者其他远程仓库下载构件的代理仓库添加在最后。
配置代理
此处配置代理,有两个原因:1.好多公司处于安全考虑,用代理上网,而nexus经常需要往mavenrepository中心下载东西,所以需要给nexus设置代理。2.就是你配置的服务器是不能上网的,因此你得让他上网,才能从中央仓库下载东西,具体设置见下图:
到此时,一个企业级的Maven库已经构建完毕,就可以通知各位同事,方便的使用此库啦。至于权限的问题,我就不多说了,您可以看左侧栏Security中的设置。
Maven--构建企业级仓库(二)的更多相关文章
- Sonar+Hudson+Maven构建系列之二:迁移Sonar
摘要:由于昨天在一台机器上安装的东西太多了,导致Linux机器上非常卡,一台Linux负担了jira, fisheye, confluence, sonar, hudson, mysql 等等,本来已 ...
- Maven进价:Maven构建系列文章
Maven:基于Java平台的项目构建.依赖管理和项目信息管理. 1.构建 Maven标准化了构建过程 构建过程:编译.运行单元测试.生成文档.打包和部署 避免重复:设计.编码.文档.构建 2.依赖管 ...
- 只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找
只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找
- Gitlab+Jenkins学习之路(十二)之Maven的私有仓库Nexus
1.什么是Nexus? 在前面进行maven项目的构建中,可以看到在构建的过程中需要安装maven的依赖插件,如图: 而在maven的默认配置中是在官网的中央仓库和第三方的maven仓库进行下载,速度 ...
- maven 动态版本 aliyun阿里云Maven仓库地址——加速你的maven构建
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Maven实战读书笔记(二):Maven坐标与仓库
2.1 Maven坐标 Maven坐标是Maven用来表示一个组件依赖的标示. Maven通过下面几个元素定义坐标:groupId.artifactId.version.packaging.class ...
- 利用Eclipse中的Maven构建Web项目报错(二)
利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...
- 利用Eclipse中的Maven构建Web项目(二)
利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...
- 二:maven构建module
通常情况下,我们一个项目是需要分多个模块的,这是我们用maven管理项目就需要构建一个多模块的项目: 通常的结构是一个模块中有一个主项目,下面包含多个子项目,如果是web项目则子项目中有一个是java ...
随机推荐
- hdu 2203亲和串 (kmp)
#include<cstdio>#include<iostream>#include<cstring>#include<string>using nam ...
- 记录一次webbrowser无法加载 activex 遇到的问题
关联配置: win7 x64 Adobe Reader XI activex 安装目录X84 笔者项目运行Any CPU 无论如何也加载不出PDF 刚开始还以为自己封装的控件XWebBrowser的问 ...
- linux cmd: ps
每天一个linux命令(41):ps命令 http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html Linux中的ps命令是Proces ...
- JavaSE_ 多线程 总目录(23~24)
JavaSE学习总结第23天_多线程123.01 多线程程序的引入23.02 进程概述及多进程的意义23.03 线程概述及多线程的意义23.04 并行和并发的区别23.05 Java程序运行原理和JV ...
- 百度云世界里的“七种武器”:PCS、BAE、Site App、ScreenX等
如果说去年百度世界的关键词是“百度新首页”的话,那么今年在研发者人群中,对百度世界最深的印象就是“七种武器”,即在云的世界里,百度为开发者所提供的包括个人云存储.LBS.移动云测试中心等在内的七种工具 ...
- 基于Visual C++2013拆解世界五百强面试题--题2-输出和为一个给定整数的所有组合
请用C语言实现 输出和为一个给定整数的所有组合 启动2012 /* 请用C语言实现 输出和为一个给定整数的所有组合 */ #include <stdio.h> //包含头文件stdio.h ...
- /export/App/zz/phantomjs-1.9.7-linux-x86_64/bin
/export/App/zz/phantomjs-1.9.7-linux-x86_64/bin
- TCP传输连接建立与释放详解
一直以来有许多读者朋友对TCP的传输连接建立和释放过程不是很理解,而这又是几乎网络认证中必考的知识点,包括软考.CCNA\CCNP.H3CNA\H3CNE等,为此再把笔者年度巨作,广受好评的——< ...
- hdu1867之KMP
A + B for you again Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- C++模板编程
如何处理函数模板中的函数体? 预备知识补充: 按照c++的语言系统,普通函数及类的声明应该放在一个头文件中(通常是.h. .hpp..hh为扩展名)里: 而将其实现放在一个主代码文件中(通常以.c . ...