在内网环境中开发时,对maven等项目极不友好,由于不能链接到Maven中央仓库,因此现有的解决方式是搭建一个maven私库(固然,你要是想把包都经过lib的方式引入也行)。用Nexus搭建完并作完配置后,就获得了一个崭新的maven仓库,一个依赖都没有,比火星还荒凉。
下面有两种方法能够对这片不毛之地进行开垦。mysql
随着业务功能复杂性上升和微服务架构的广泛应用,开发过程当中所依赖的第三方包并不像我上大学写做业时一只手就能数过来,工程对应的本地Maven库动辄上百兆,这就须要一个简单快捷的方法将几百个依赖都放到私库上。sql
新建立一个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}/{} ;
脚本建立完毕
4.在当前目录执行这个脚本,并加上maven私库的帐号密码,以及地址架构
./mavenimport.sh -u admin -p admin -r http://IP:PORT/repository/dataservice/
执行完毕后,刷新maven库,就能够看到上传的包了。curl
我本地maven库占磁盘200M,上传大概花费五分钟左右。maven
当咱们maven库已经造成规模,而且仅仅缺乏一两个依赖的时候,咱们就经过手动上传的方式添加依赖。微服务
固然,只要是人,总会出错的,因此尽量地避免手动输入,咱们在导入jar文件后,再添加一个资产,将pom文件也一块儿导入,这样就能避免手动输入出现的错误。this
最后在仓库里查看上传成功的依赖,检查是否存在pom文件。url
最后包都能顺利下载,可是maven插件却非暴力抵抗,不能提供下载,因而又在maven的配置中加上了私库地址,而且着重加上了<mirrorOf>central</mirrorOf>这个标签。spa
这样本地项目的依赖和maven插件都恢复正常。
最后想起《火星救援》中的一段台词: