为什么要搭建Maven私服?
(1)有些公司不允许开发人员使用外网,于是我们需要搭建一个maven的服务器我们使用。
(2)公司自己搭建私服,jar会下载到公司的服务器上,这样既节省了网络带宽也会加速项目搭建的进程。
这里是用Nexus来搭建Maven服务器
1.下载Nexus
下载地址:http://www.sonatype.org/nexus/ 打开以后,进行如下操作:
点击红色标记部分,进入下载界面,选择对应的服务器系统版本进行下载
下载完后nexus.zip文件后,解压自己想放置的文件目录(最好不要有中文目录)。
2.启动Nexus
解压后的文件出现了两个文件夹:
--nexus-2.14.3-02
--sonatype-work
进入到 nexus-2.14.3-02\bin\jsw,会看到很多带有系统的文件夹,选择对应的服务器系统,进入对应的文件下,这里我选择进入:windows-x86-64,界面如下:
这里可以选择 console-nexus.bat来选择启动nexus,不过会保留黑窗口;
也可以选择install-nexus.bat将nexus设置为windows时的服务,然后启动start-nexus.bat,等待一下后就开启了nexus服务,这样服务器重启时也会重启该服务(推荐)
然后在游览器中输入http://127.0.0.1:8081/nexus/,出现如下图所示就代表nexus已经启动成功。
点击右上角的Log In 会弹出一个登录框
输入Username: admin
Password:admin123
点击登录,便可以登录成功。
3.设置Nexus
(1)登录成功后,点击左侧的Views/Repositories下的Repositoies,界面如下:
PublicRepositories: 仓库组
3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库(例如数据库的驱动包)
Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
Central: 用来代理maven中央仓库中发布版本构件的仓库
Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
Releases: 用来部署管理内部的发布版本构件的宿主类型仓库
Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库
新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,最重要的一件事情就是开启远程索引下载。
点击Central,下面会出现相关的Central相关的信息,点击Configuraion,将其中Download Remote Indexs由false改成true,最后点击下方的保存。
同理,Apache Snapshots也需要将Download Remote Indexs由false改成true,最后点击下方的保存。
(2)开始下载这个代理仓库的索引
将Download Remote Index设置成true后,分别右击Central和Apache Snapshots,如下所示:
点击Repair Index,就开始下载整个代理库的索引(索引很大,需要下载的时间很长,请耐心等待)
下载完成标志: 点击一个代理库,比如Central,查看下方的Browse Index,下图所示:
如果点击Refresh,会出现Central目录,且里面有很多目录,表示下载完成。否则请耐心等待下载。
(3)使用仓库组Gourp
Nexus 中仓库组的概念是Maven没有的,在Maven看来,不管你是hosted也好,proxy也好,或者group也好,对我都是一样的,
我只管根据 groupId,artifactId,version等信息向你要构件。为了方便Maven的配置,Nexus能够将多个仓库,hosted或者
proxy合并成一个group,这样,Maven只需要依赖于一个group,便能使用所有该group包含的仓库的内容。
Nexus默认自带了一个名为“Public Repositories”组,点击该组可以对他保护的仓库进行调整,如下所示:
点击Public Repositories->点击Configuration->将Available Repositories中可用的库移动到左边->点击保存。
4.如何添加第三方Jar包(以数据库驱动包为例)
按下面三张图片的设置过后,就在第三方库中拥有了这个jar包,就可以根据搜索该jar包进行导入。
5.设置Maven指向我们的Nexus私服
在设置maven的配置文件时,其内容如下:
至于为什么这么配置,我也不是很清楚。这样配置以后,你在maven项目导包时,会首先检测本地有没有,有则本地导入,没有则从我们搭建的服务器上导入,
如果私服上也没有,则私服会从apache的中央仓库下载到私服,再从私服导入,渐渐的私服上基本上都有公司常用的jar包。
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <server> <id>nexus-user</id> <username>admin</username> <password>admin123</password> </server> </servers> <mirrors> <mirror> <id>nexus-public</id> <mirrorOf>*</mirrorOf><!-- 这里的地址是服务器的地址 --> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus1</id><!-- 这里的地址是服务器的地址 --> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus2</id> <!-- 这里的地址是服务器地址 --> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>