Nexus 3上传Maven依赖

在内网环境中开发时,对maven等项目极不友好,由于不能链接到Maven中央仓库,因此现有的解决方式是搭建一个maven私库(固然,你要是想把包都经过lib的方式引入也行)。用Nexus搭建完并作完配置后,就获得了一个崭新的maven仓库,一个依赖都没有,比火星还荒凉。
下面有两种方法能够对这片不毛之地进行开垦。mysql

方法一 批量上传

随着业务功能复杂性上升和微服务架构的广泛应用,开发过程当中所依赖的第三方包并不像我上大学写做业时一只手就能数过来,工程对应的本地Maven库动辄上百兆,这就须要一个简单快捷的方法将几百个依赖都放到私库上。sql

  1. 确保项目在本地maven环境下无错误;
  2. 进入到本地maven库下
    image.png
  3. 新建立一个sh脚本bash

    #!/bin/bash
    # copy and run this script to the root of the repository directory containing files
    # this script attempts to exclude uploading itself explicitly so the script name is important
    # Get command line params
     
    while getopts ":r:u:p:" opt; do
     case $opt in
         r) REPO_URL="$OPTARG"
         ;;
         u) USERNAME="$OPTARG"
         ;;
         p) PASSWORD="$OPTARG"
         ;;
     esac
    done
     
    find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

    脚本建立完毕
    image.png
    4.在当前目录执行这个脚本,并加上maven私库的帐号密码,以及地址架构

./mavenimport.sh -u admin -p admin -r http://IP:PORT/repository/dataservice/

执行完毕后,刷新maven库,就能够看到上传的包了。curl

我本地maven库占磁盘200M,上传大概花费五分钟左右。maven

方法二 手动上传

当咱们maven库已经造成规模,而且仅仅缺乏一两个依赖的时候,咱们就经过手动上传的方式添加依赖。微服务

  1. 找到咱们新加的maven库
    image.png
  2. 点击进入,点击左上角上传按钮(若是没有这个按钮,请先登陆一个有上传权限的帐号),固然,左侧菜单中的Upload也能上传,和此处功能同样
    image.png
    3.进入上传页面,咱们经过Browse按钮选择咱们要上传的jar,好比咱们要上传一个mysql的驱动包。上传以后必定要注意Classifier,若是有值,手动去除。
    image.png
    下面的Group ID,Artificat ID以及Version都须要手动填写,最后的Generate a POM file with these coordinates必定要勾选,并填写下面的Packaging,不然这个jar包是不能下载到本地的。对于不知道Packaging内容的同窗,能够到本地仓库里找一下当前jar包对应的pom文件,里面通常都会说明,若没有则默认写jar。
    image.png

固然,只要是人,总会出错的,因此尽量地避免手动输入,咱们在导入jar文件后,再添加一个资产,将pom文件也一块儿导入,这样就能避免手动输入出现的错误。this

image.png

最后在仓库里查看上传成功的依赖,检查是否存在pom文件。
image.pngurl

最后包都能顺利下载,可是maven插件却非暴力抵抗,不能提供下载,因而又在maven的配置中加上了私库地址,而且着重加上了<mirrorOf>central</mirrorOf>这个标签。spa

这样本地项目的依赖和maven插件都恢复正常。

最后想起《火星救援》中的一段台词:
image.png

相关文章
相关标签/搜索