@
- 前言
- 一、环境准备
- 二、nexus环境配置
- 三、了解nexus
- 四、上传naxus
- 五、使用nexus
- 六、问题
- 1、问题一
- 后言
前言
书接上文?enn....
嘛~ ,上文:nexus 3.x下载 3.18.1(maven 私服)
上面是教如何下载nexus的
嘛,开始吧,有啥阔以聊的我后面再放吧(づ ̄ 3 ̄)づ
一、环境准备
1、一台服务器 :我的是Centos7云服务器(可云,可本地,只不过重点在有无外网)
2、jdk:jdk1.8(老牌)
3、maven:maven3.6.2 (都不陌生吧,版本看着来)
4、nexus:nexus3.18.1 (上面有攻略)
二、nexus环境配置
(1)解压
tar -xvf nexus-3.18.1-01-unix.tar.gz
./nexus-3.18.1-01 程序home路径
./sonatype-work 工作目录,包含缓存信息,日志,上传到私服的相关包的信息
nexus的环境变量最好要配置(关于后面自启动的配置),至于jdk,maven这些这里就不过多赘述了
vim /etc/profile
#和NEXUS_HOME
export NEXUS_HOME=/home/nexus/nexus-3.18.1-01
export PATH=$NEXUS_HOME/bin;
#完成以后使更改后的文件立即生效
source /etc/profile
#检验配置是否成功
nexus
使用./nexus run 就是直接放到主线程里跑
在这里我们最好就试一试主线程能不能跑通,跑不通的话请看下面的 问题一
使用./nexus start 就是后台运行
如果主线程跑的没问题的话,就可以直接起了
(4)设置自启服务
在/etc/rc.local 文件最底下加入行 nexus start
三、了解nexus
(1)登录
默认端口号为:ip:8081,如果有需要可以到/nexus/sonatype-work/nexus3/etc/nexus.properties ,进行修改端口即可
首次登录的话是需要到它提示的文件里找初始密码的
(2)基本仓库
- maven-releases (Version policy=Release)默认只允许上传不带SNAPSHOT版本尾缀的包,默认部署策略是Disable redeploy
不允许重复上传相同版本号信息的jar,避免包版本更新以后使用方无法获取到最新的包。- maven-snapshots (Versionpolicy=Snapshot)只允许上传带SNAPSHOT版本尾缀的包,默认部署策略是Allow
- redeploy,允许重复上传相同版本号信息的jar,每次上传的时候会在jar的版本号上面增加时间后缀信息。 maven-central
中央仓库的拷贝,如果环境可以访问中央仓库,则可以获取到相关的包,否则没用- maven-public
仓库组,不是实际个一个仓库地址,只是将现有的组合到一次,可以通过它看到所属组内全部仓库的jar信息
我得说一下,我这里并不管其他角色和权限仓库之类的,不过如有需要,可以参考后面的博客。
四、上传naxus
(1)项目打包
setting.xml需要配置:
maven-snapshots
账号名
账号密码
maven-releases
账号名
账号密码
pom.xml需要配置:
maven-snapshots
http://www.javawwl.com:9081/repository/maven-snapshots/
maven-releases
http://www.javawwl.com:9081/repository/maven-releases/
就可以直接上传了,记得要配置好maven
(2)window本地maven仓库批量上传
文件内容:
#!/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}/{} ;
打开此文件的cmd,运行命令:
mavenimport.sh -u 用户名 -p 密码 -r http://ip:端口/repository/maven-releases/
五、使用nexus
就像之前一样配置阿里的镜像,配置自己的镜像就行了。不过也有两种方式:
(1)第一种: 设置镜像仓库
setting.xml内
maven-releases
Maven Hundusn Yuntai Mirror(zjrc)
*
http://www.javawwl.com:9081/repository/maven-releases/
(2)第二种: 配置全局pom.xml仓库地址
setting.xml内
jdk-1.8
true
1.8
1.8
1.8
1.8
dev
maven-releases
http://www.javawwl.com:9081/repository/maven-releases/
true
always
false
maven-snapshots
http://www.javawwl.com:9081/repository/maven-snapshots/
false
true
always
dev
(3)参考setting.xml (大佬的)
D:\AboutWork\maven\repository
true
false
false
org.mortbay.jetty
org.codehaus.cargo
com.hundsun.scm.maven.plugins
org.apache.maven.plugins
org.codehaus.mojo
maven-snapshots
username
password
maven-releases
username
password
public
Maven Hundusn Yuntai Mirror(zjrc)
*
http://nexusIp:8081/repository/maven-public/
jdk-1.8
true
1.8
1.8
1.8
1.8
dev
maven-releases
http://nexusIp:8081/repository/maven-releases/
true
always
false
maven-snapshots
http://nexusIp:8081/repository/maven-snapshots/
false
true
always
dev
六、问题
1、问题一
nexus起不来。。。
我就是遇到过这个问题滴。
就是所谓交换区不够:
按照步骤来就行
执行命令 free 查看内存是不是还有 最主要的是 看有没有交换空间 swap (这很重要)如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间
(1)、创建swapfile:
root权限下,创建swapfile
dd if=/dev/zero of=swapfile bs=1024 count=10000000
(有时会遇到dd命令不识别 可能是你安装过一次了 没事 先把swapfile删除就ok了)
(2)、将swapfile设置为swap空间
mkswap swapfile
(3)、启用交换空间,这个操作有点类似于mount操作(个人理解):
swapon swapfile
(删除交换空间 swapoff swapfile)
至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化;
后言
如果还有其他需求的,比我这个详细的多: Linux Nexus Repository Manager OSS 3.18.1-01 搭建指南
毕竟我这个只是简单的教你如何上传依赖到私库,又如何使用罢了。
不过话说(○` 3′○),像这种东西感觉只适合那些大公司来使用(毕竟小公司也不会写那种自研的源码)
又或者是嫌下载依赖的速度还是不过快的人。
公司内部如果装了一个私库的话,把当前正在开发的项目所需依赖全放进去,那么如果有新成员来了,连接下载依赖肯定就快很多了。。。。
我的云服务器只是最辣鸡的一种(一核两G)
宽带只有1M,enn...但是感觉下载一下2,3M的依赖包还是没多大问题滴。
我看了下5M宽带的服务器,哇(っ °Д °;)っ,感觉一定很快吧。
有其他了解私库的用途的小伙伴也可以跟我讲一下咯,谢谢