maven学习(中)- 私服nexus搭建
接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件之一,下面将介绍基本用法:
一、到nexus官网下载最新版
1.1 下载地址:http://www.sonatype.org/downloads/nexus-latest-bundle.zip (目前最新版本是2.7.2-03)
(2015-07-02注: 上面的下载地址好象已经失效了,新的地址为 http://www.sonatype.org/nexus/archived/ )
1.2 下载完后,解压到指定目录,比如:c:\java\nexus\
1.3 启动nexus
%nexus_home%\bin\nexus.bat install (安装成windows服务)
%nexus_home%\bin\nexus.bat start (启动)
tips : 直接nexus.bat不带参数,会显示完整的参数列表
参考下图,如果启用不起来,检查jdk版本,nexus要求1.7版本(如果版本不对,请调整环境变量JAVA_HOME指向jdk1.7的目录)
如果换成1.7还是启用不了,建议用nexus.bat console 控制台方式启用,这样可以看到详细启动过程
启动成功后,可以用http://localhost:8081/nexus 进入控制界面
点击右上角的Log In,默认用户名/密码是admin/admin123
二、添加jboss资源库地址
2.1 先了解下nexus的资源库类型:
Hosted Repository - nexus本机的资源库(相当于nexus所在服务器硬盘上已经存在的jar、pom文件库)
Proxy Repository - 代理库,很多开源官方组织都在互联网上公布了Repository,供全世界的开发者使用,nexus中设置该类型的资源库后,其它使用nexus的开发者,表面上是在请求nexus服务器上的jar包,但nexus实质是背后是在请求这些互联网资源,首次会把服务器上没有的资源,从网上download到nexus服务器(以文件形式保存到硬盘上),然后再返回给开发者,下次再有同样的pom/jar请求时,直接从服务器硬盘上返回,不再请求互联网
Repository Group - 资源组,比如我们有很多资源库:资源库A、资源库B...,可以把它们再成组合一个特殊的资源C,然后其它开发人员,在maven里配置资源C地址,这样maven在向资源C请求jar包里,实质会搜索资源A、资源B
2.2 添加jboss 代理资源库
maven默认的官方资源库http://repo1.maven.org/maven2/,很多第三方的jar包没有,所以我再添加一个jboss的资源库
点击左侧的Repositories,然后再点击右侧的Add,会弹出下拉菜单,选择Proxy Repository
接下来,参考下图填写:
Respository ID这里填写:jboss-public-repository-group (可以自已改名字)
Respository Name这里填写:JBoss Public Maven Repository Group (可以自已改名字)
其它项保持默认
Remote Storage Location这里填写:https://repository.jboss.org/nexus/content/groups/public-jboss/ (这是jboss公布的公开资源库)
2.3 下载jboss eap 6.x的离线资源包
首次使用nexus时,私服服务器上实质上没有任何jar包的缓存,所以第一次使用时,其实跟直接到互联网上下载没啥区别,只有后面再请求相同的jar包,服务器上才会有jar文件缓存,为了加快速度,我们可以直接上jboss官网下载离线资源包
下载地址: htp://www.jboss.org/jbossas/downloads
然后解压到指定目录,建议放在 %nexus_home%\sonatype-work\nexus\storage\ 下
然后add一个hosted repository,参考下图:
2.4 把刚才添加的二个respoitory添加到Public Repositories组
刚才我们添加了二个新的资源库,检查一下是否包括在默认的Public Repositories组里
如果没包括在组里,参考上图处理一下,然后保存。最后建议更新一下索引,参考下图:
三、修改本机当前用户下.m2目录下的settings.xml

1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
6
7 <mirrors>
8 <mirror>
9 <id>nexus</id>
10 <mirrorOf>*</mirrorOf>
11 <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
12 </mirror>
13 </mirrors>
14
15 <profiles>
16 <profile>
17 <id>nexus</id>
18 <repositories>
19 <repository>
20 <id>nexus</id>
21 <name>Nexus</name>
22 <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
23 <releases><enabled>true</enabled></releases>
24 <snapshots><enabled>true</enabled></snapshots>
25 </repository>
26 </repositories>
27 <pluginRepositories>
28 <pluginRepository>
29 <id>nexus</id>
30 <name>Nexus</name>
31 <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
32 <releases><enabled>true</enabled></releases>
33 <snapshots><enabled>true</enabled></snapshots>
34 </pluginRepository>
35 </pluginRepositories>
36 </profile>
37 </profiles>
38 <activeProfiles>
39 <activeProfile>nexus</activeProfile>
40 </activeProfiles>
41
42 </settings>

注:大家自行把这段xml中的地址换成nexus服务器的ip。
然后随便创建一个maven项目,执行mvn clean package 之类,观察下输出:
从上图可以看出,现在依赖项都是从nexus服务器下载的
四、eclipse中添加资源xml
最后再补充一个小技巧,这跟私服其实关系不大。每次我们在eclipse里创建maven project时,都会弹出一个界面,让我们选择“项目模板“,这个过程需要联网获取模板列表,而且每次都次重复获取,很不合理,如下图:
可以点击Confiure,会弹出以下界面,点击”Add Local Catalog“
先在浏览里访问 https://repository.jboss.org/nexus/content/groups/public-jboss/archetype-catalog.xml 这个地址,然后保存为xml文件,接下面的界面里 Catalog File里,选择这个xml文件,然后Description填写一个名字
然后在创建Maven项目时,就可以直接选择这个了,选择后,将直接读取本机xml的内容,比联网获取要快得多
最后给一个小技巧:
有时候,在单位的局域网里架构nexus服务器,服务器并不能访问外网,这样就无法通过代理库从互联网下载jar包,可以这样做:
开发人员的机器通常是能上网的,先在本机修改settings.xml,不走nexus私服,直接从互联网中央仓库下载一次,把所有东西编译好以后,将本机 "当前用户\.m2\repository"复制到nexus私服服务器的相应存储目录,一般则nexus同级目录下的sonatype-work\nexus\storage\central 目录,然后再登录nexus管理界面手动更新索引,以后其它人就能正常使用nexus私服了。
下一节将学习如何利用profile来生成各种不同环境的部署包
maven学习(中)- 私服nexus搭建的更多相关文章
- Maven学习 (四) 使用Nexus搭建Maven私服
为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...
- Maven入门:使用Nexus搭建Maven私服及上传下载jar包
一. 私服搭建及配置 1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓 ...
- Maven教程4(私服-nexus)
仓库管理器也叫私服或代理仓库 仓库管理器有两个服务目的:首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理,其次它为你的组织提供了一个可部署你组织内部生成的构件的地方. 1Nex ...
- Maven学习笔记—私服(包含maven的setting.xml配置)
为什么要用远程仓库(私服) 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,这样就加大了中央仓库 ...
- maven私服nexus搭建(windows)
1.下载nexus 地址:https://www.sonatype.com/download-oss-sonatype 下载相应版本的zip包. 2.安装nexus 下载完成后,解压到本地任意目录. ...
- 大数据学习——装私服nexus
(一)安装 解压之后 进入bin文件夹下 复制路径 D:\software\nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin 进入命令行窗口输入以下命令,安装成功 ...
- Maven 使用Nexus搭建Maven私服
Maven学习 (四) 使用Nexus搭建Maven私服 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找 ...
- Windows使用Nexus搭建Maven私服
简介 Maven私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件,有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服请求外部的 ...
- (转)Maven学习总结(九)——使用Nexus搭建Maven私服
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(九)——使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目 ...
随机推荐
- KMP算法实现
链接:http://blog.csdn.net/joylnwang/article/details/6778316 KMP算法是一种很经典的字符串匹配算法,链接中的讲解已经是很明确得了,自己按照其讲解 ...
- 分享10条PHP性能优化的小技巧,帮助你更好的用PHP开发:
1. foreach效率更高,尽量用foreach代替while和for循环. 2. 循环内部不要声明变量,尤其是对象这样的变量. 3. 在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环 ...
- codevs 2287 火车站
2287 火车站 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述 Description 火车从始发站(称为第1站)开出,在始发站上车的人 ...
- 2016 年 11 月 12 个轻量级的 JavaScript 库
https://www.oschina.net/news/79316/2016-11-javascript-library?from=20161127
- ThinkPHP框架下的表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- Web API系列(一)设计经验与总结
在移动互联网的时代, Web服务已经成为了异构系统之间的互联与集成的主要手段,各种 Web服务几乎都采用REST风格的Web Api来构建. 通过Http协议的形式来. 以Get/Post方式发送请求 ...
- Eclipse中.calsspath文件解析
来自帅气的Sublime Text
- setTimeout 和 setInterval 的区别
setTimeout (表达式,延时时间)setInterval(表达式,交互时间)延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTimeout 在执行时,是在载入后延迟指定时间 ...
- 利用AOP与ToStringBuilder简化日志记录
刚学spring的时候书上就强调spring的核心就是ioc和aop blablabla...... IOC到处都能看到...AOP么刚开始接触的时候使用在声明式事务上面..当时书上还提到一个用到ao ...
- asp.net core 如何在Controller获取配置文件的值
场景:我们会把一些配置信息,写在配置文件文件中,便于我们修改和配置.在之前的asp.net 中可以通过ConfigurationManger来获取web.config里面的配置.在.net core ...