目录

1.搭建Maven私服背景

2.安装Nexus,并初次启动Nexus

3.将nexus配置为系统服务

4.配置nexus和熟悉它

第一步,跟随着说明文档,看看下载nexus下来之后,有两个目录

如果你想配置nexus的应用在本地启动的JVM参数,可以在nexus.vmoptions

如果你想改变nexus的端口号,可以在nexus-default.properties

5.搭建maven私服资源库

第一步:首先http://localhost:8081/

第二步:使用nexus3要搭建maven私服的核心功能

如果你想直入主题,往下看。

①在创建 repository之前,还是需要先设定一个指定的文件存储目录,便于统一管理。

②第二步,创建Proxy Repository  代理资源库

③第三步,创建hosted repository 托管资源库

④第四步,创建group repository  组资源库

⑤第五步,比较nexus中默认提供的

6.让maven项目用到刚刚搭建的maven私服

①在原始的setting文件中加入

②按照http://www.cnblogs.com/sxdcgaq8080/p/7580964.html教程,把IDE指定为这个setting.xml文件即可。

③在新建的maven项目中的pom.xml文件中,添加一个原本本地仓库中没有下载过的架包【新建maven项目的过程:http://www.cnblogs.com/sxdcgaq8080/p/5586644.html】

7.使用命令上传第三方jar到nexus

步骤1:

步骤2:

步骤3:


1.搭建Maven私服背景

公司还是按捺不住,要搭建一个自己的Maven本地仓库,可以让开发人员down架包,从内网还是快很多。

这样公司的maven本地仓库就是 开发人员自己电脑上的maven仓库  和    Maven远程仓库  之间的一个缓冲仓库。

那要构建一个maven私服,需要用到Maven仓库管理软件,关于Apache Archiva,Artifactory,Sonatype Nexus的区别,有下面这些的参考对比:

http://blog.sina.com.cn/s/blog_72ef7bea0102vq0k.html

http://www.sonatype.org/nexus/2015/02/23/migrating-from-artifactory-archiva-or-a-raw-maven-repository-to-sonatype-nexus/

2.安装Nexus,并初次启动Nexus

这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:Nexus Repository OSS - Software Component Management | Sonatype。

这里先以windows上为例【Linux上之后再来一份】

在你点击下载之后,会有Read THE BOOK 的入口和加入NENUX社区的入口。

这里直接给你ReadTheBook的地址:https://help.sonatype.com/display/NXRM3

这里你可以找到官方提供的完整安装和使用教程。【因为这里使用的是Nexus3的版本,和参考文章中不大一致】

下载的压缩包解压下来

然后cmd,命令窗口进入nexus-3.5.2-01目录下的bin目录下,按照官方的启动方式,需要在bin目录下使用nexus /run命令启动,如下图

确认之后,下面会打印出来启动的相关信息,接下来,耐心等待它启动完成。

直到出现下面这个,才算启动完成。

初次启动之后,你可以在浏览器上访问nexus这个maven管理器

地址:http://localhost:8081/

当然,你可以使用默认的用户登录(高版本会将默认密码提示在服务器目录中,注意查看登录提示信息)。

用户名:admin

密码:admin123

此时,观看命令窗口,会有记录相关的操作记录。

3.将nexus配置为系统服务

根据官方文档说明,将nexus配置为系统服务是一个很好的选择。因为

第一:上面的安装和启动过程并没有默认的把nexus作为服务加入系统服务中;

第二:这样下次服务器重启,服务也会重启。

但是这个有个前提,就是已经确保安装了Java运行时环境。

接下来,我们重新打开一个窗口,去将nexus加入系统服务

最后的<optional-service-name>,咱们直接命名成nexus就好。【当然,最后这个不指定的话,默认就是创建成nexus服务名】

在windows7上安装nexus为系统服务时,报错:could not open SCManager

但是报错如下:

解决方法:

然后再次运行

如果再解决不了,那就在

直接以管理员身份运行这个命令提示符,然后安装服务。

显示安装成功之后,可以进入控制面板---》管理工具---》服务

查找名为nexus的服务

你可以选择,点击上面的启动按钮启动服务,也可以用下面的命令启动服务

【当然,可以在上面配置启动参数,这个之后再去查看配置】

启动完成之后,试着访问一下http://localhost:8081/

因为上面服务是自动的。

重启电脑之后,再次访问,可以访问到,完美。

4.配置nexus和熟悉它

第一步,跟随着说明文档,看看下载nexus下来之后,有两个目录

nexus-3.5.2-01    安装目录

bin    包含nexus的启动脚本和相关配置      

etc    jetty、karaf等配置文件

jre    jre环境

lib    java架包库

public  关于nexus应用在本地跑起来所需要的资源

system  应用所有的插件和组件

LICENSE.txt 和 NOTICE.txt    版权声明和法律细则

sonatype-work\nexus3    数据文档

blobs/      创建blob的默认路径,如果你指定了绝对路径,那就不在这里了

cache/      当前缓存的karaf包的信息

db/        OrientDB数据库的数据,用于存储nexus的元数据的数据库

elasticsearch /    当前配置的Elasticsearch状态

etc/          大概是运行时配置状态和关于资源库的自定义的相关的东西

health-check/      看目录,健康检查的相关报告的存储目录吧

keystores/        自动生成的关于资源库的ID主键

log/            运行实例生成的日志文件,也有日志文件的压缩包,貌似是每天都会生成日志文件,你可以定期删除老的日志文件

tmp/            用于存储临时文件的目录

具体每个目录下的各个配置文件的作用,请参考官方文档说明:https://help.sonatype.com/display/NXRM3/Installation

如果你想配置nexus的应用在本地启动的JVM参数,可以在nexus.vmoptions

如果你想改变nexus的端口号,可以在nexus-default.properties

5.搭建maven私服资源库

由于现在使用的nexus3,所以在nexus应用上资源库初始化目录和nexus2有很大的不同,但是类型都是一样的。

第一步:首先http://localhost:8081/

登录上nexus,未登录的状态下是这样的。

使用默认用户名admin密码admin123登录后,如下

第二步:使用nexus3要搭建maven私服的核心功能

在nexus安装并启动之后,我大概的把整个nexus的官方说明文档走了一遍,主要就是介绍了左侧菜单中的各个功能模块。https://help.sonatype.com/display/NXRM3/Configuration

有兴趣去看看,还是很有帮助的。

====================================================================================================================

-------------------------------------------------------------------------------------普及-----------------------------------------------------------------------------------------------------------------

上面提到的一点,不管nexus版本是怎么样的,至少,repository的类型是一样的。

先看一下大概的目录结构:

根据多方的文档和别人的博客,再综合官网的解释,我就这样理解得出:

资源库也就是这么三种,如上图中  【代理资源库】【托管资源库】【组资源库】,其实名字就是我自己瞎起的。

具体解释一下:

【代理资源库】:就是配置了外网的maven远程仓库地址的资源库,本地找不到,就会通过代理资源库中的地址,找到远程仓库,从远程仓库中下载所需要的jar。

【托管资源库】:就是放在本地的资源库,零零散散的jar,从远程仓库中下不到,只能自己在网上找,找到jar下载下来,放在托管资源库中,交给nexus统一管理。不然哪天想去用连接数据库的jar包,还得自己翻磁盘,多麻烦。

【组资源库】 :从上面①+②看出来,其实组资源库中并没有jar包,而是把代理资源库和托管资源库统一配置到组资源库中,然后组资源库作为一个唯一的public提供给所有人使用。就像工人1+工人2把自己的账单统一给包工头,让包工头去跟老板结账是一个道理。

好,明确了这一点,开始往下看吧。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果你想直入主题,往下看。

①在创建 repository之前,还是需要先设定一个指定的文件存储目录,便于统一管理。

由下面新建的完成的,可以看出,

②第二步,创建Proxy Repository  代理资源库

创建页面出来之后,页面上有三个input框是必填的:

远程Maven地址:https://repo1.maven.org/maven2/

其他的不用更改了。保存就好了。

【注意】:我想建好几个proxy repository,以便于我可以加入更多的远程maven仓库到我的group 资源库中

唯一一点,就是你看你加入的proxy资源库哪个使用的是国内的maven仓库地址,哪个是国外的。

当然国内的要放在国外的之前。

这样的加入group资源库的顺序就是  hosted资源库>国内proxy资源库>国外proxy资源库

下面给出一些maven远程仓库的地址:

jboss的maven中央仓库地址:http://repository.jboss.com/maven2/

阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/

apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/

③第三步,创建hosted repository 托管资源库

Hosted有三种方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的版本
Mixed:混合的

④第四步,创建group repository  组资源库

为什么要注意顺序??

官方文档中建议:

It is recommended practice to place hosted repositories higher in the list than proxy repositories. For proxy repositories, the repository manager needs to check the remote repository which will incur more overhead than a hosted repository lookup.

希望将hosted repositories【托管资源库】的顺序放在proxy repositories【代理资源库】之前,因为一个group【组资源库】中可以涵括这些托管资源库和代理资源库。而一整个的group是作为一个public,一个接口给别人使用的。所以当查找架包的时候,如果代理资源库在前面,那就是先从远程去查找jar,而不是先从托管资源库(本地仓库)去查找是否有jar。这样访问外网的消耗比起来在本地查找,当然是将托管资源库放在代理资源库之前的优先位置了。

⑤第五步,比较nexus中默认提供的

好吧,从命名上也可以看出来,系统自带的命名可以看出来这个资源库是什么类型中的什么类型的。【没有创建未发布的资源库,那以后咱们自己想去创建的,自行创建,再加入到group中就行了】

如果你想,可以自己去创建一个新的admin,新的用户名,新的密码,新的权限。供下面使用。

6.让maven项目用到刚刚搭建的maven私服

==========================================================个人理解===============================================================

maven下的setting.xml文件和你自己项目中的pom.xml文件的关系:

    Ⅰ.settting.xml文件就是本地,电脑上的全局变量;而pom.xml文件就是局部变量。

    Ⅱ.自己创建的pom.xml文件肯定对于项目来说,优先使用的。然而pom.xml文件中如果没有指定jar要从哪里下载的话,也就是说没有配置镜像地址的话,当然只能去按照全局变量中定义的地址去找了

    Ⅲ.那怎么去找咱们的全局变量呢?其他人可能是直接在pom.xml文件中配置指定的方式。我是使用的IDE【编译工具】中直接指定确定的setting.xml文件,这样在pom.xml文件中没有的情况下,我的IDE就按照设定的去找对应的setting.xml文件去。

【注意】:有一点要注意的就是,maven如果是你自己下载的,那里面肯定会有一份setting.xml文件。什么都不配置的话,它全部都是按照默认值去干的,例如本地仓库它默认的就是放在用户/.m2/文件夹下的。

【忠告】:在修改setting.xml文件之前,先备份一份原始的。个人感觉里面的注释是非常有参考价值的。

下面开始解释具体的详细步骤:

最简单的使用方式:

①在原始的setting文件中加入

拷贝的这个地址,就是下面即将在setting.xml文件中添加时使用的。可以对应下面的setting.xml文件中看。

<!--http://www.cnblogs.com/sxdcgaq8080/p/7580964.html 有详细教程--><!--就是配置maven本地仓库的地址为自定义的地址--><localRepository>D:\apps\repository</localRepository><!--nexus服务器--><servers>  <server>  <id>nexus</id>  <username>admin</username>  <password>admin123</password>  </server>   </servers>  <!--组资源库的url地址  id和name自定义,mirrorOf的值设置为central,写死的-->  <mirrors>     <mirror>  <id>nexus</id>  <name>nexus repository</name>  <url>http://localhost:8081/repository/myself_group/</url>  <mirrorOf>central</mirrorOf>  </mirror>     </mirrors>

②按照http://www.cnblogs.com/sxdcgaq8080/p/7580964.html教程,把IDE指定为这个setting.xml文件即可。

③在新建的maven项目中的pom.xml文件中,添加一个原本本地仓库中没有下载过的架包【新建maven项目的过程:http://www.cnblogs.com/sxdcgaq8080/p/5586644.html】

你自己的项目中pom.xml文件并不需要改变什么东西,以前怎么用,现在还怎么用。

例如下面:

这是我新建的一个maven项目

pom.xml文件中

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sxd.testP</groupId><artifactId>mavenProject</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><build><plugins><plugin><artifactId>maven-war-plugin</artifactId><configuration><version>3.1</version></configuration></plugin></plugins></build><!-- 这一段是新添加的,这一段之外的都是创建maven项目时,它自己生成的pom.xml文件框架 --><dependencies><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency></dependencies><!-- 这一段结束 -->  </project>

然后保存pom.xml文件之后,

在本地仓库中

这个就算你不建私服,只要指定了本地仓库自定义的地址,一般都会下载成功的。

下面看看私服中是否有这个东西

http://localhost:8081/    admin、admin123登录进入[不登陆也可以搜索,这看你自己会给游客这种角色分配什么样的权限了]

点开查看:

点进入jar包的这个概要信息

查找发现,后面的那一串应该类似于UUID的字符串 可以查找到

原来nexus把下载下来的所有文件都转化成了byte文件。这也难怪在上面创建

是使用的blob这个单词。二进制的意思吧!!!

=========================================================================================================================================

至此,maven私服搭建,以及使用maven项目使用maven私服已经全部连通。

如果想看详细的配置的话,可以在GitHub上查看:https://github.com/sonatype/nexus-book-examples

=========================================================================================================================================

7.使用命令上传第三方jar到nexus

最后的最后,就是还有一部分,咱们没有走。

使用nexus2的话,可以在界面上直接上传第三方的jar到上创建的hosted资源库,也就是托管资源库中。

可是nexus3在页面我愣是找了半天也没有找到。同时官方的说明文档我查了一半,貌似也没有发现。所以,页面上既然没有这个功能,就只能自己使用命令上传第三方jar到nexus了。

示例:

上传一个处理word的jar包到nexus上。

jar包为jacob

我们先在nexus上搜索一下:下面是搜不出来的

步骤1:

把hosted资源库,也配置到maven的settting.xml文件中

添加下面:

<!--id自定义,但是在使用命令上传的时候会用到-->
<server>  <id>myself_hosted</id>  <username>admin</username>  <password>admin123</password>  </server>

到目前为止,我的settting.xml文件也就是下面这些东西

步骤2:

使用

以下命令

mvn deploy:deploy-file -DgroupId=sxd.jar -DartifactId=jacob -Dversion=1.18 -Dpackaging=jar -Dfile=G:\jar\jacob-1.18.jar -Durl=http://localhost:8081/repository/myself_hosted/ -DrepositoryId=myself_hosted

命令解释:

-DgroupId=sxd.jar                           自定义
-DartifactId=jacob                          自定义
-Dversion=1.18                            自定义  三个自定义,构成pom.xml文件中的坐标
-Dpackaging=jar                           上传的类型是jar类型
-Dfile=G:\jar\jacob-1.18.jar                   jar的本地磁盘位置
-Durl=http://localhost:8081/repository/myself_hosted/    hosted资源库的地址,下图中
-DrepositoryId=myself_hosted                   setting.xml文件中配置的ID

上传完成,再nexus中查看一下:

上传成功!!!

步骤3:

在项目的pom.xml文件中引入一下jar包

     <dependency><groupId>sxd.jar</groupId><artifactId>jacob</artifactId><version>1.18</version><scope>provided</scope></dependency>

保存pom.xml文件。

这下,发现maven下已经引入成功。并且已经将这个jar包放入本地maven仓库了。

完全成功了。

==========================================================================================================================================================

这个整个的过程,花费了一个周末+2天的时间!

==========================================================================================================================================================

附赠:如果上面的方法失败,可以使用这个方法上传已经存在的第三方jar包到本地maven仓库

例如我的本地有几个第三方的jar,你想直接上传本地的maven仓库

1.有几个第三方的jar

2.编辑上传命令install

导入第三方jar的命令

mvn install:install-file -Dfile=D:\document\IdeaProjects\myTestDocument\jar\transaction-springcloud-4.2.0-SNAPSHOT.jar -DgroupId=com.codingapi -DartifactId=transaction-springcloud -Dversion=4.2.0-SNAPSHOT -Dpackaging=jar

导入第三方pom文件的命令【留作参考】

mvn install:install-file -Dfile=D:\document\IdeaProjects\myTestDocument\jar\tx-lcn-4.2.0-SNAPSHOT.pom -DgroupId=com.codingapi -DartifactId=tx-lcn -Dversion=4.2.0-SNAPSHOT -Dpackaging=pom

3.上传完成后,可以将source的jar直接拷贝到maven仓库中

本地maven仓库中展示已经上传成功的jar目录

将source 直接拷贝到此处即可【如果没有source就算了】

4.最后,就可以在自己的项目中引用了

<dependency><groupId>com.codingapi</groupId><artifactId>transaction-springcloud</artifactId><version>4.2.0-SNAPSHOT</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.codingapi</groupId><artifactId>tx-plugins-db</artifactId><version>4.2.0-SNAPSHOT</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency>

使用nexus3搭建maven私服(超详细,建议收藏)相关推荐

  1. Linux安装Nexus3搭建maven私服超详细搭建上传步骤

    下载nexus3.x 上传nexus压缩包并解压 启动 开启端口号 浏览器访问 ​编辑 设置开机自启动 运行用户为root (编辑nexus bin下的nexus.rc) 修改nexus3启动时要使用 ...

  2. 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!

    呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!! ✴️大家好,我是王同学,爆肝三天三夜王同学把JavaScript 知识点梳理了一遍,文章没有一点套路,只有满满的干货 ✴️如果对你 ...

  3. 【Maven】CentOS7使用Nexus3搭建maven私服

    一.简介 Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做PO ...

  4. 使用Nexus搭建Maven私服最详细的教程

    环境:linux centos6.5 安装包:nexus-2.12.0-01-bundle.tar.gz 安装 1.将文件上传到目录/usr/local/software 2.我的安装包目录/usr/ ...

  5. 最全Python函数总结和应用(超详细+建议收藏),基本所有内置函数,心得都在这了,踩的坑也在里面了,最后还有函数的魂

    希望能帮助到你 前言 基础的函数了解 惊喜类 all() 和 any() lambda函数 sorted()函数 map()函数 filter()函数 reduce()函数 eval()函数 zip函 ...

  6. centos8搭建maven私服(含nexus-3.28.1-01.tar.gz下载链接)

    centos8搭建maven私服 简介 maven maven私服 仓库简介 Nexus仓库类型介绍 私服搭建 环境 安装nexus 创建目录 下载 拷贝压缩文件至/usr/local目录下 解压 创 ...

  7. windows下使用nexus3.x搭建maven私服

    写在前面 本文描述了在windows下如何使用nexus3.x搭建maven私服,文章可能还有很多不足,请大家谅解,欢迎大佬提意见. 本文使用到的东西 nexus win10 文章目录 写在前面 本文 ...

  8. 【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件

    文章目录 Nexus是什么 Nexus下载和安装 1. 进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,如下图所示. 2. 将下载 Nexus 安装包解压到本地磁盘,可获 ...

  9. Sonatype Nexus搭建maven私服仓库

    搭建Maven私服仓库 1. 概述 Sonatype Nexus是一种特殊的远程仓库,是架设在局域网内的仓库管理器. nexus 可以搭建局域网maven私服仓库(实现局域网用户共享),并且支持代理广 ...

最新文章

  1. VM8不能安装64位操作系统原因解析
  2. matlab 求附近的根,求近似根的算法-matlab实现 | 学步园
  3. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型
  4. netbeans6.8_NetBeans 8.0的五个新性能提示
  5. angular是MVC模式还是MVVM架构模式
  6. mysql update 批量修改数据_MySQL 中实现数据的批量修改
  7. 使用colab训练faster-rcnn
  8. SqlServerSQL语句方式--视图创建
  9. 电子计算机eniac的储存能力有限 只能,电子计算机ENIAC的存储能力有限,只能存储简单的控制程序代码。...
  10. 现在企业常用考勤软件
  11. win10系统自带的日历hover效果
  12. Mac电脑为什么适合编程?
  13. BUUCTF-Misc-No.4
  14. 虚拟化、虚拟机等概念理解
  15. 零售药店计算机操作内容培训,零售药店gsp培训计划.doc
  16. canvas根据坐标点绘制图形
  17. H5游戏作弊与防作弊——我如何拿到第一名的天猫精灵
  18. Zynq 【SDK裸机开发之PS】——串口接收缓存
  19. 2021数字孪生城市白皮书 附下载
  20. android联系人信息的存储结构

热门文章

  1. SpringBoot的全局异常处理的优雅吃法!要进来学习下吗
  2. java中的后台线程、前台线程、守护线程区别
  3. window系统下安装mysql5.7教程
  4. vba宏语言_三分钟了解Excel的程序语言VBA
  5. python怎么实现检验_python 怎么实现数据串进行 BCC 校验 (Block Check Character/ 信息组校验码)?...
  6. 阻止计算机访问注册表,电脑怎么样防止注册表被强行的篡改,保护电脑安全
  7. centeos 6.7 mysql 5.7.12_学习centeos7系统 · cdwanze的博文
  8. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...
  9. myeclipse mysql连接_MyEclipse连接MySQL数据库图文教程
  10. 以mips为单位衡量微型计算机的性能,2016计算机二级《MS Office》选择题专项训练...