在内网环境中开发时,对maven等项目极不友好,因为不能连接到Maven中央仓库,所以现有的解决方式是搭建一个maven私库(当然,你要是想把包都通过lib的方式引入也行)。用Nexus搭建完并做完配置后,就得到了一个崭新的maven仓库,一个依赖都没有,比火星还荒凉。
下面有两种方法可以对这片不毛之地进行开垦。
方法一 批量上传
随着业务功能复杂性上升和微服务架构的普遍应用,开发过程中所依赖的第三方包并不像我上大学写作业时一只手就能数过来,工程对应的本地Maven库动辄上百兆,这就需要一个简单快捷的方法将几百个依赖都放到私库上。
- 确保项目在本地maven环境下无错误;
- 进入到本地maven仓库下;
新创建一个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 './mavenUpload\.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私库的账号密码,以及地址
./mavenUpload.sh -u admin -p admin -r http://IP:PORT/repository/dataservice/
执行完毕后,刷新maven库,就可以看到上传的包了。
我本地maven库占磁盘200M,上传大概花费五分钟左右。
方法二 手动上传
当我们maven库已经形成规模,并且仅仅缺少一两个依赖的时候,我们就通过手动上传的方式添加依赖。
- 找到我们新加的maven库
- 点击进入,点击左上角上传按钮(如果没有这个按钮,请先登录一个有上传权限的账号),当然,左侧菜单中的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插件都恢复正常。
最后想起《火星救援》中的一段台词:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。