用nexus搭建自己的maven私有仓库

用nexus搭建自己的maven私有仓库

刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止。后来查找到了原因:

Java 6 Support EOL
Oracle‘s support for Java 6 ended in February 2013.  Consequentially as of version 2.6 Nexus now requires a Java 7 JRE to run.

意思就是从2.6.0开始不支持6了,jdk版本要求7以上。

一、用admin用户登陆nexus

nexus的下载和安装都很简单,网上也有很多介绍,本文就不重复了。主要介绍一下安装之后的配置

nexus的配置需要用admin角色完成,默认的密码是admin123,进入nexus首页之后,点击右上角,进行登录

然后就可以在左边的菜单中进行配置了

二、为nexus配置代理服务器

由于这台机器需要通过代理才能访问外网,所以首先要配置代理服务器,在Administration-->Server中进行配置

配置之后,nexus才能连上central repository,如果私服所在机器可以直接上外网,则可以省略这一步

三、配置repository

在Views/Repositories-->Repositories里进行配置

nexus里可以配置3种类型的仓库,分别是proxy、hosted、group

proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用

hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里

group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了

nexus装好之后,已经初始化定义了一些repository,我们熟悉之后,就可以自行删除、新增、编辑

右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还以为是BUG,其实是被浏览器缓存了

四、配置Central Repository的proxy

最关键的一个配置,可能就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的

在安装完nexus之后,这个proxy是预置的,需要做的就是把Download Remote Indexes改为true,这样nexus才会从centralrepository下载索引,才能在nexus中使用artifact search的功能

网络上有一些其他公开的maven仓库,可以用同样的办法,在nexus中设置proxy,但是并不是所有maven仓库,都提供了nexus index,这种情况下,就无法建立索引了

五、配置hosted repository

一般会配置3个hosted repository,分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版

这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止

六、配置group repository

前面说过,group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址

这里要注意的是,放到左边的仓库,才是会被聚合的仓库。我昨天一直搞错了,把仓库都放到右边,结果group什么都没有聚合到,是一个空的仓库。。。

七、配置用户密码

在Security-->Users中配置,在deployment用户上点击右键,选择Set Password,然后设置一个密码,做这个操作是为了后面提交做准备

八、在用户机器上配置settings.xml

经过前面的7个步骤,nexus就配置好了,接下来需要在每个开发人员的开发机器上进行配置了

配置文件在%USER_HOME%/.m2/settings.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <servers>
  6. <server>
  7. <id>nexus-snapshots</id>
  8. <username>deployment</username>
  9. <password>deployment</password>
  10. </server>
  11. </servers>
  12. <mirrors>
  13. <mirror>
  14. <id>nexus</id>
  15. <name>internal nexus repository</name>
  16. <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
  17. <mirrorOf>central</mirrorOf>
  18. </mirror>
  19. </mirrors>
  20. </settings>

这里只配置了2个元素<mirrors>和<servers>

首先这里配置了一个id为nexus的镜像仓库,地址是前面配置的public group的URL,然后镜像目标是central

maven里的超级pom,里面配置了这样一段:

  1. <repositories>
  2. <repository>
  3. <id>central</id>
  4. <name>Central Repository</name>
  5. <url>http://repo.maven.apache.org/maven2</url>
  6. <layout>default</layout>
  7. <snapshots>
  8. <enabled>false</enabled>
  9. </snapshots>
  10. </repository>
  11. </repositories>
  12. <pluginRepositories>
  13. <pluginRepository>
  14. <id>central</id>
  15. <name>Central Repository</name>
  16. <url>http://repo.maven.apache.org/maven2</url>
  17. <layout>default</layout>
  18. <snapshots>
  19. <enabled>false</enabled>
  20. </snapshots>
  21. <releases>
  22. <updatePolicy>never</updatePolicy>
  23. </releases>
  24. </pluginRepository>
  25. </pluginRepositories>

因此,当本地的maven项目,找不到需要的构件(包括jar包和插件)的时候,默认会到central里获取

所以我们刚刚配置的镜像仓库,id也是central,这样本地maven项目对central repository的请求,就会转到镜像仓库上,也就是我们设置的nexus私服上

由于我们在项目的pom里,不会再配置其他的<repositories>和<pluginRepositories>元素,所以只要配置一个central的mirror,就足以阻止所有的外网访问。如果pom中还配置了其他的外网仓库,比如jboss repository等,可以把<mirrorOf>改为*

至于<servers>元素,是因为我们把项目内部的构件上传到nexus的仓库中时,nexus会进行权限控制,所以这里需要设置权限相关的信息。注意这里的<id>nexus-snapshotsid>,和后面maven工程里的pom设置是一致的

由于我们这里已经屏蔽了对外网仓库的请求,所以就不需要配置代理服务器了,如果需要配置代理服务器,可以用<proxies>元素

九、配置maven项目的pom文件

下面是简化后的pom文件:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.huawei.inoc.wfm.task</groupId>
  5. <artifactId>task-sla</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>task-sla</name>
  8. <!-- 配置部署的远程仓库 -->
  9. <distributionManagement>
  10. <snapshotRepository>
  11. <id>nexus-snapshots</id>
  12. <name>nexus distribution snapshot repository</name>
  13. <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>
  14. </snapshotRepository>
  15. </distributionManagement>
  16. </project>

这里配置了<distributionManagement>元素,其中的<id>nexus-snapshots</id>,与前面说的settings.xml中的<servers>元素中的配置必须一致

配置这个的目的,是当执行maven deploy时,才知道要将生成的构件部署到哪个远程仓库上,注意这里的URL填的就不是public group的地址: 
http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/

而是snapshots的地址: 
http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/

但是在nexus中,snapshots也是聚合到public group里的,所以开发人员A提交到snapshots的构件,开发人员B也可以从public group里获取到

十、eclipse中的设置

经过前面的配置,已经可以通过命令行进行maven操作了。不过实际开发中,一般都是使用eclipse的m2e插件,所以还需要对eclipse进行一些额外的配置

在Preferences-->Maven-->User Settings中,点击Update Settings,加载刚才我们对settings.xml的更改

然后在Maven Repositories视图里,可以看到仓库的情况

可以看到,从超级pom继承来的central被置灰了,不可用,后面的mirrored by nexus表示对该仓库的所有请求,都会转到镜像nexus中

十一、nexus的目录结构

nexus会安装在%USER_HOME%/sonatype-work/nexus下,有以下目录

其中的storage目录,就是构件实际存放的地址了

时间: 2024-08-02 07:03:37

用nexus搭建自己的maven私有仓库的相关文章

使用Nexus创建Maven私有仓库

1.为什么需要maven私有仓库? 从Maven中央仓库下载所需的jar包,需要外网的支持.如果公司不能上外网的话则不能从中央仓库下载所需jar包,公司网速慢的时候也会影响项目构建的速度.用户可以用nexus创建私有的maven仓库. 2.下载和部署Nexus 首先下载nexus,下载地址是http://www.sonatype.org/nexus/go 在此页面可以下载最新版本的Nexus,可以下载zip包也可以下载war包.需要注意的是两种包的部署方式不一样. zip包部署方式 a.把zip

如何打造一个高可用多租户的企业级Maven私有仓库服务

摘要: 为什么要打造多租户的企业级Maven私有仓库服务? 在Java的世界中,我们通常使用Maven的依赖体系来管理构件(artifact,又称为二方库或三方库)的依赖.Maven仓库用于存储这些构件.一般的远程仓库(比如Maven Central)只提供下载功能. 为什么要打造多租户的企业级Maven私有仓库服务?在Java的世界中,我们通常使用Maven的依赖体系来管理构件(artifact,又称为二方库或三方库)的依赖.Maven仓库用于存储这些构件.一般的远程仓库(比如Maven Ce

如何在云服务器创建maven私有仓库

参考链接:https://blog.csdn.net/silence_jjj/article/details/77531916 nexus3创建maven私有仓库(windows) 1.官网:https://www.sonatype.com/download-oss-sonatype 2.解压nexus3的zip包,找到\nexus-3.3.1-01\bin文件夹,shift+右键 -> 在此处打开命令窗口 3.在cmd中输入 nexus.exe/run ,然后回车 4.等待几分钟后,控制台出现

搭建和使用Docker私有仓库

需要注意的是,从Docker Pool下载的镜像文件,与官方镜像文件是完全一致的. 安装Docker之后,可以是使用官方提供的registry镜像来搭建一套本地私有仓库环境: docker run –d –p 5000:5000 registry 输入之后就可以等待了,其实本地仓库本身就是容器,这句命令会下载并创建一个registry容器,创建本地的私有仓库. 默认情况下,会将仓库创建在容器的tmp/registry目录下,当然,可以通过-v参数将镜像文件存放到本地的指定路径上. docker 

【新功能】企业级Maven私有仓库服务结束公测,全面开放使用

摘要: 目前云效上线了企业级Maven私有仓库服务.用户可以一键开通Maven私有仓库服务,零配置实现私有二方库的上传和下载. 经过半个月的公测,云效中的企业级Maven私有仓库服务正式上线,全面开放使用.用户可以一键开通Maven私有仓库服务,零配置实现私有二方库的上传和下载. 企业级Maven私有仓库核心功能点 一键开通,自动生成release和snapshot两个仓库: 高效上传和下载,后端存储使用阿里云OSS服务,二方库永不丢失: 与云效构建高度集成,无需额外配置即可与私库打通. 以下是

利用nexus搭建maven私有仓库

闲的没事自己搭建了一个私有仓库,把操作记录下载留待以后翻阅. 1.安装nexus环境. 首先去官网下载nexus oss的zip包http://www.sonatype.org/nexus/,这个是免费使用的. 下载完成之后解压zip包.然后cmd命令进入nexus目录下的bin目录,首次使用需要先安装nexus,执行nexus.bat install: 提示安装成功,然后继续输入命令nexus.bat start:稍等一下就会看到nexus启动成功信息.启动完成输入地址http://local

nexus - 搭建maven私有仓库

安装windows服务 nexus /install 启动nexus服务 访问http://localhost:8081/ 右上角登陆,提示admin密码在某个文件,查看并输入即可 配置maven 配置文件 ~/.m2/settings.xml 4.1 配置下载依赖时,使用本地的nexus私有仓库 <mirrors> <mirror> <id>local-nexus</id> <mirrorOf>*</mirrorOf> <na

通过Nexus搭建maven私有仓库,并通过gradle上传jar

安装nexus 安装docker``·bashyum install docker-ce 拉取镜 docker pull registry.docker-cn.com/sonatype/nexus3:3.13.0 创建数据持久化目录 mkdir -p /opt/share/files/nexus-data/ chow 200 /opt/share/files/nexus-data/ 启动容器 docker run -d -p 80:8081 --name nexus -v /opt/share/

搭建自己的 Docker 私有仓库服务

关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已经有客户在 VPS 上用 Docker 来部署应用了.不了解 Docker 的小伙伴们可以看看 使用 Docker/LXC 迅速启动一个桌面系统 开头部分的介绍. 和初次接触 Xen/KVM 虚拟技术的体验不同,Docker 不用自己动手制作镜像,官方已经提供了很多版本的 Linux 镜像,直接从官