美文网首页
nexus搭建和maven某些配置的理解

nexus搭建和maven某些配置的理解

作者: xtl007 | 来源:发表于2020-04-01 17:01 被阅读0次

引言

最近突然想自己搭建个maven私服nexus,然后就动手搭了一遍。这个过程中自己对maven的一些配置有新的理解。学习嘛,有个输出会更加深印象吧,所以想把自己搭建nexus和一些新的理解记录下来,也可以供自己以后复习。

一 nexus搭建

参考文章:https://www.jianshu.com/p/1cfbc1518fce

1环境准备,这里不详细说了,会java的这些都是基础了。

centos7,jdk1.8,nexus-3.9.0-01-unix.tar.gz

Nexus官网下载压缩包巨慢,经常下载不了

这里提供一个网上的网盘下载地址:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw

2 解压缩

tar -zxvf  nexus-3.9.0-01-unix.tar.gz

3 进入bin目录


4 运行

注意:如果你的系统可用内存不够会报错,此时可用修改nexus启动内存

默认是1200M,我这里修改成了512M,但不能过小,过小的话启动时还是会内存不够

我最开始修改成128M,就启动不起来。


5 检查是否成功

访问Ip:8081,注意系统的8081端口开放。8081端口是默认端口,也可以修改

进行登录,有个默认用户:admin/admin123


二 nexus简单看看

Nexus默认就有这些maven仓库了

首先说些仓库类型

Proxy:代理库,这就是个远程参考,例如:maven-central这个仓库就是代理的maven的中央仓库。

Hosted:本地库,就是nexus机器上的本地仓库。我们自己的jar可以上传到这里。

Group:组,好几个仓库可以归为一组,能够包含 proxy,hosted仓库。

Jar下载流程: 先本地maven库,再私服group仓库,group仓库规则:先hosted本地库,再proxy远程库。

三 nexus仓库新增

我们可以新增一个proxy库,连个hosted库(一个release,一个snapshot),一个group仓库把这些新增的库都包含进去。

1 proxy库,我们新增一个aliyun的maven代理仓库

http://maven.aliyun.com/nexus/content/groups/public/

然后点击创建就可以了

2 创建hosted库,顺序一样,记得选择 maven2(hosted)


3 创建group仓库,选择maven2(group)

我们maven链接group仓库时,group仓库 会先从 hosted类型的仓库逐一查找,没找到 在从proxy类型的仓库中逐一查找。

四 使用私服

Settings.xml文件中配置 私服镜像

Url我们一般配置成 group仓库的地址, 在nexus上可以找到


五 项目直接deploy到私服上去

1 项目中的pom进行配置

<distributionManagement>    <repository>        <id>my-release</id>        <name>Nexus Release Repository</name>        <url>http://xx.xx.xx.xx:8081/repository/mys-release/</url>    </repository>    <snapshotRepository>        <id>my-snapshot</id>        <name>Nexus Snapshot Repository</name>        <url>http://xx.xx.xx.xx:8081/repository/my-snapshot/</url>    </snapshotRepository></distributionManagement>


2 hosted仓库的 deployment policy 要改成allow redeploy


3 settings.xml中配置用户名密码

注意:pom中配置的repository的id 和这里的id要对应一样

  <servers>

    <server>  

        <id>my-release</id>  

        <username>admin</username>  

        <password>admin123</password>  

    </server>  

    <server>  

        <id>my-snapshot</id>  

        <username>admin</username>  

        <password>admin123</password>  

    </server>

  </servers>

上面三步配置完成后,可以在idea中双击maven的生命周期中的deploy

成功后再nexus的 相关仓库中就可以看到相关的jar包了


六 deploy后 进行maven依赖

直接在pom中进行dependency依赖就可以了。把项目的坐标依赖过去

注意了,这时你可能还是依赖不成功。

为什么呢?因为默认不能从从snapshot仓库中下载依赖的。此时你要开启这个功能

可以在settings.xml中进行配置,项目中也可以,但xml中配置了 所有的项目都可以用了。

<profiles>

  <profile>

     <id>mycof</id>

        <repositories>

          <repository>

          <id>nexus</id>

          <url>http://ip:8081/repository/my-public/</url>

          <releases>

            <enabled>true</enabled>

          </releases>

          <snapshots>

            <enabled>true</enabled>

          </snapshots>

        </repository>

      </repositories>      

      <pluginRepositories>

        <pluginRepository>

          <id>nexus</id>

          <url>http://ip:8081/repository/my-public/</url>

          <releases>

            <enabled>true</enabled>

          </releases>

          <snapshots>

            <enabled>true</enabled>

           </snapshots>

        </pluginRepository>

      </pluginRepositories>

    </profile>

</profiles>

<activeProfiles>

  <activeProfile>mycof</activeProfile>

</activeProfiles>

 

此时就可以正常从snapshot库中下载依赖了

七 第三方jar包直接通过nexus页面上传

上传后去相应仓库中查看

这样就成功了

在项目中就可以正常依赖了

到此nexus的搭建和使用告一段落了,日常的使用就足够了。

接下来讨论下我在搭建使用过程中的一个疑问吧。

有没有发现settings.xml中 mirro和repository同时配置了

我当时就疑问了,这两者有啥区别呢?

参考文章:https://my.oschina.net/sunchp/blog/100634

1 mirro相当于是个拦截器

比如我们配置访问a仓库 ,但是经过它的拦截 会访问到它指向的仓库

2 repository就是配置我们maven要访问的仓库。

如果没有配置默认是中央仓库

所以如果我们在repository中直接配置我们的nexus仓库,那mirro就可以不用配置了。

今天的学习就到这了,下次见!

相关文章

网友评论

      本文标题:nexus搭建和maven某些配置的理解

      本文链接:https://www.haomeiwen.com/subject/lzuauhtx.html