maven使用私服Nexus,以及配置私服Nexus

一、编译java代码时,maven和Nexus大体都干什么?

maven负责将代码中涉及到的依赖全部从 Nexus 私服中缓存到自己的本地仓库中,然后将java代码转换成二进制,把代码中写的依赖到的类的 jar 包全部下载到服务本地的 lib 目录中,最后被压缩成 jar/war 包,压缩格式是 Zip 。如下图,利用 file 命令可以看到是 zip 格式的包,解压后再 BOOT-INF 目录中用 lib ,lib 下就是所有依赖的 jar 包。

maven使用私服Nexus,以及配置私服Nexus_第1张图片

二、maven 配置私服地址和本地缓存路径。

     
     
          /data/base-module/apache-maven-3.6.3/repo
     
     
     
            
                linke-deploy-release
                admin
                df24tgeg2
            
            
                nexus-deploy-snapshot
                admin
                df24tgeg2
            
      

三、nexus配置。

起 nexus 很简单,起个 docker 把数据目录挂载出来即可。

#!/bin/bash

docker run -d \
    -p 8081:8081 --name nexus \
    -v /data/nexus/nexus-data:/nexus-data \
    --restart=always sonatype/nexus3

启动后,浏览器 ip:port 即可打开,admin 初始密码在容器中这个文件内 /nexus-data/admin.password ,即在宿主机 /data/nexus/nexus-data/admin.password 文件内。

nexus 启动后,在 browse 中,默认有两个 group 、两个 proxy 、两个 hosted 、

maven使用私服Nexus,以及配置私服Nexus_第2张图片

登录后,在设置下的 repositories 菜单中可以查看每个类型的配置信息,也可以添加新类型。最常用的一般是 proxy ,对于大多公司而言,group 都使用的是自带的 maven-public , 私有依赖都上传在 hosted 中。添加完新的 proxy 后,将这个 proxy 再添加到 maven-public 名字的 group 下。

如图是归属在 maven-public group 下默认的几个成员

maven使用私服Nexus,以及配置私服Nexus_第3张图片

 maven使用私服Nexus,以及配置私服Nexus_第4张图片

 可以看到,在 maven-public 组下,有默认的三个成员。maven-central 是 proxy 类型,代理的公网的依赖源;maven-releases 和 maven-snapshots 都是 hosted 类型,即本地文件。因此从 maven-public 下可以查询到这三个成员下所有的依赖 jar 包。

我们可以再看一下自带的 maven-central ,代理的是 https://repo1.maven.org/maven2/ 仓库

maven使用私服Nexus,以及配置私服Nexus_第5张图片

当然还有写别的公网仓库,如国内的阿里云的仓库,这时我们就需要单独加一个 proxy ,然后再加到 maven-public 组下。

阿里云仓库汇总地址 https://developer.aliyun.com/mvn/view

maven使用私服Nexus,以及配置私服Nexus_第6张图片

下面我们将上面红框的 sprint 的仓库加到私服的代理中,然后加到 maven-public 组下

maven使用私服Nexus,以及配置私服Nexus_第7张图片

 找到 maven2 proxy

maven使用私服Nexus,以及配置私服Nexus_第8张图片

 写好 Name(最好和公网的私服名字写一样) 、Remote storage(复制公网私服的地址)

maven使用私服Nexus,以及配置私服Nexus_第9张图片 加好后,保存后就可以看到下图中的样子

maven使用私服Nexus,以及配置私服Nexus_第10张图片

 下面将 sprint 这个成员加到  maven-public 中。

maven使用私服Nexus,以及配置私服Nexus_第11张图片

 maven使用私服Nexus,以及配置私服Nexus_第12张图片

 加进来以后,使用 maven 编译时,依赖到这个仓库的 jar 包就会被拉取到了。注意:刚刚加入时,不被使用的话,在 browse 中是看不到这个仓库的目录的,当编译一次后,这个成员被使用了的话,就可以在 browse 一栏中看到这个仓库的内容了。

 maven使用私服Nexus,以及配置私服Nexus_第13张图片

 当编译时被调用后,就可以看到了

maven使用私服Nexus,以及配置私服Nexus_第14张图片

四、通过命令上传依赖包到私服 nexus 中。

上传 jar 包时,一定要把打这个 jar 包时生成的 pom 文件一并传上来。如果不传编译 jar 包时自动生成的 pom ,那么传到 nexus 上后,该 jar 包会自动生成一个 pom 文件,但是这个 pom 文件内的依赖只有它自己,它依赖到的其它依赖找不到。

1、上传 jar 包和它的 pom 文件到私服中。

mvn \
  deploy:deploy-file \
  -Dpackaging=jar \
  -DgroupId=com.winchannel.vitamin \
  -DartifactId=weixin-java-common \
  -Dfile=weixin-java-common-0.0.2-SNAPSHOT-master.jar \
  -Dversion=0.0.2-SNAPSHOT-master \
  -DpomFile=weixin-java-common-0.0.2-SNAPSHOT-master.pom \
  -Durl=http://192.168.1.189:8081/repository/maven-releases/ \
  -DrepositoryId=winchannel-deploy-snapshot \
  -X

注解:

deploy:deploy-file   # 动作类型为部署包参数

-Dpackaging=jar    # 上传包类型是 jar 包

-DgroupId=com.winchannel.vitamin    # 上传文件的路径,对应到 nexus web 中是目录路径

-DartifactId=weixin-java-common     # 上传文件的包名,对应到 nexus web 中是 com/winchannel/vitamin/weixin-java-common 目录

-Dversion=0.0.2-SNAPSHOT-master   # 上传文件的版本号,对应到 nexus web 中是 com/winchannel/vitamin/weixin-java-common/0.0.2-SNAPSHOT-master 

-Dfile=weixin-java-common-0.0.2-SNAPSHOT-master.jar   # 要上传的文件名

-DpomFile=weixin-java-common-0.0.2-SNAPSHOT-master.pom   # 要上传文件的 pom 文件

-Durl=http://192.168.1.189:8081/repository/maven-releases/     # 传到 nexus 中哪个 hosted 命名下

-DrepositoryId=winchannel-deploy-snapshot    # 使用 maven 工具配置的哪个 server id 进行 nexus 的认证。

-X   # 打印 dbug

上传完毕后,在 nexus 的 maven-public 中的对应路径可以看到,前面的路径不好截图,自己脑补即可。

maven使用私服Nexus,以及配置私服Nexus_第15张图片

maven使用私服Nexus,以及配置私服Nexus_第16张图片

 2、只上传 pod 文件到私服中。

mvn \
  deploy:deploy-file \
  -Dpackaging=pom \
  -DgroupId=com.winchannel.vitamin \
  -DartifactId=wx-java \
  -Dversion=0.0.2-SNAPSHOT-master \
  -Dfile=wx-java-0.0.2-SNAPSHOT-master.pom \
  -Durl=http://192.168.1.189:8081/repository/maven-releases/ \
  -DrepositoryId=winchannel-deploy-snapshot \
  -X

注解:

-Dpackaging=pom     #和上面传 jar 包不同的是 -Dpackaging 类型是 pom

3、上传 jar 包到 maven 本地,而不上传到私服中。

mvn \
  install:install-file \
  -Dpackaging=jar \
  -DgroupId=com.winchannel.vitamin \
  -DartifactId=weixin-java-common \
  -Dfile=weixin-java-common-0.0.2-SNAPSHOT-master.jar \
  -Dversion=0.0.2-SNAPSHOT-master \
  -DpomFile=weixin-java-common-0.0.2-SNAPSHOT-master.pom \

 注解:

install:install-file     # 动作类型为安装包参数

-Durl 、 -DrepositoryId    # 和私服相关的这两个参数不需要

上传完毕后,在 maven 的本地 repo 目录下的 com/winchannel/vitamin 可以查看到

你可能感兴趣的:(杂货店,maven,nexus,maven私服)