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

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

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

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

     <!-- 本地仓库存储路径 -->
     <localRepository>
          /data/base-module/apache-maven-3.6.3/repo
     </localRepository>
     <!-- 私服地址 -->
     <servers>
            <server>
                <id>linke-deploy-release</id>
                <username>admin</username>
                <password>df24tgeg2</password>
            </server>
            <server>
                <id>nexus-deploy-snapshot</id>
                <username>admin</username>
                <password>df24tgeg2</password>
            </server>
      </servers>

三、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 、

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

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

 

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

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

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

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

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

 找到 maven2 proxy

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

 加好后,保存后就可以看到下图中的样子

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

 

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

 

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

四、通过命令上传依赖包到私服 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 中的对应路径可以看到,前面的路径不好截图,自己脑补即可。

 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 可以查看到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值