关于后端:Nexus-3上传Maven依赖

4次阅读

共计 1669 个字符,预计需要花费 5 分钟才能阅读完成。

在内网环境中开发时,对 maven 等我的项目极不敌对,因为不能连贯到 Maven 地方仓库,所以现有的解决形式是搭建一个 maven 私库(当然,你要是想把包都通过 lib 的形式引入也行)。用 Nexus 搭建完并做完配置后,就失去了一个簇新的 maven 仓库,一个依赖都没有,比火星还荒凉。
上面有两种办法能够对这片不毛之地进行开垦。

办法一 批量上传

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

  1. 确保我的项目在本地 maven 环境下无谬误;
  2. 进入到本地 maven 库下
  3. 新创建一个 sh 脚本

    #!/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}/{} ;

    脚本创立结束

    4. 在当前目录执行这个脚本,并加上 maven 私库的账号密码,以及地址

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

执行结束后,刷新 maven 库,就能够看到上传的包了。

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

办法二 手动上传

当咱们 maven 库曾经造成规模,并且仅仅短少一两个依赖的时候,咱们就通过手动上传的形式增加依赖。

  1. 找到咱们新加的 maven 库
  2. 点击进入,点击左上角上传按钮(如果没有这个按钮,请先登录一个有上传权限的账号),当然,左侧菜单中的 Upload 也能上传,和此处性能一样

    3. 进入上传页面,咱们通过 Browse 按钮抉择咱们要上传的 jar,比方咱们要上传一个 mysql 的驱动包。上传之后肯定要留神 Classifier,如果有值,手动去除。

    上面的 Group ID,Artificat ID 以及 Version 都须要手动填写,最初的 Generate a POM file with these coordinates 肯定要勾选,并填写上面的 Packaging,否则这个 jar 包是不能下载到本地的。对于不晓得 Packaging 内容的同学,能够到本地仓库里找一下以后 jar 包对应的 pom 文件,外面个别都会阐明,若没有则默认写 jar。

当然,只有是人,总会出错的,所以尽可能地防止手动输出,咱们在导入 jar 文件后,再增加一个资产,将 pom 文件也一起导入,这样就能防止手动输出呈现的谬误。

最初在仓库里查看上传胜利的依赖,查看是否存在 pom 文件。

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

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

最初想起《火星救济》中的一段台词:

正文完
 0