Nexus私服
仓库:对maven来说仓库分为两类:本地仓库和远程仓库,远程仓库又分为中央仓库 私服和其他公共库 中央仓库之前说过
所以说私服,私服是一种特殊的远程仓库。他是p81
有三种专门的Maven仓库管理软件可以用来帮助我们建立私服:chiva、Artifactory和Nexus。Nexus是当前最流行的Maven仓库管理软件。
一、用war方式安装Nexus
下载Nexus
http://download.****.net/detail/wshuaichao/8305241
将其下载到Tomcat的部署目录的webapps目录下,如下
然后改名为nexus.war
参考 http://blog.****.net/zhangdaiscott/article/details/46829999
然后转到tomcat目录的bin目录下运行,这时读者可以从Tomcat的console输出中看到它部署nexus.war
当tomcat启动完成之后访问http://localhost:8080/nexus/就能看到Nexus的界面了
二、
登录:Nexus有全面的权限控制功能,默认的nexus访问都是匿名的,而匿名用户仅包含一些最基本的权限。要想全面学习和管理Nexus就必须以管理员方式登录。单击右上角Log In进行登录 默认管理员和密码是admin/admin123
登录之后的页面如下:
三、Nexus的仓库与仓库组
Nexus包含了各种类型的仓库的概念,包括代理仓库、宿主仓库、仓库组等。每一种仓库都提供了丰富实用的配置参数,方便用户根据需要进行定制。
- Nexus内置的仓库
先浏览一些Nexus内置的仓库。单击Nexus界面左边导航栏中的Repositories链接 看到下图:
这个列表已经包含了所有类型的Nexus仓库。从中可以看到仓库有四种类型(Type):group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟);每个仓库的格式(Format)为maven2或maven1;还有一个策略属性Policy:表示该仓库为发布版本仓库(Release)还是快照版本仓库(Snapshot);最后两列是仓库的状态和路径。
各个仓库的用途:
Codehaus Snapshots 这是一个策略为Snapshot的代理仓库 用来代理Codehaus Snapshots仓库的快照版本构件
Apache Snapshots这是一个策略为Snapshot的代理仓库 用来代理Apache Snapshots仓库的快照版本构件
Central 该仓库代理Maven中央仓库 策略为Release 因此只会下载和缓存中央仓库中的发布版本构件
Releases这是一个策略为Release的宿主类型仓库 用来部署组织内部的发布版本构件
Snapshots这是一个策略为Snapshot的宿主类型仓库 用来部署组织内部的快照版本构件
举个简单例子:假设某公司建立了一个maven项目x,公司内部建立了Nexus私服为所有maven项目提供服务。。。。
p153
- 仓库分类
看图,各种类型的Nexus仓库
从图中可以看出,maven可以直接从宿主仓库下载构件;也可以从代理仓库下载构件,而代理仓库会间接的从远程仓库下载并缓存构件;最后,为了方便,maven可以从仓库组下载构件,而仓库组没有实际内容它会转向其包含的宿主仓库或者代理仓库获得实际构件的内容。
- 创建Nexus宿主仓库
配置界面
- 创建Nexus代理仓库
- 创建Nexus仓库组
2:下载地址
http://www.sonatype.org/nexus/go
根据自已的操作系统下载适合的版本
3:Nexus启动
这个下载下来后是绿色版的,进入bin/jsw/选择你系统的版本/console-nexus.bat,运行http://127.0.0.1:8081/nexus/
8081为默认的端口号,要修改端口号可进入\conf\打开nexus.properties文件,修改application-port属性值就行了。默认的用户名和密码:admin/admin123
4: 进入首页击左侧:Repositories,可以看到几种仓库的类型,下面一一介绍一下
这是软件默认给我们建立的标准类型,可以删除,但是这里不需要删除它。将自已类型的包放在相应的类型下即可
5:管理本地仓库,也就是类型为hosted的。这也是我们项目中会用到的。
6:项目中配置仓库地址
修改maven的setting.xml文件,修改这个文件的话,我们所有项目都会是这个配置,如果每个项目需要不同的maven配置,可以配置在工程的pom.xml文件中,
但是一般不会为每个工程配置一个仓库,所以我们选择修改setting.xml文件。
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-snapshots</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
这里一般都是固定写法,基本上不要变动,就是所需要的JAR包默认会去本地仓库获取,如果获取不到,就会去maven的中央仓库获取,JAR包获取到之后,也会默认上传到我们本地仓库,
这样其它项目组的同事就可以直接从本地获取了