安装
- centOS下使用的nexus3,安装过程没啥可说的,主要是记一下遇到的问题。
vm配置
Error occurred during initialization of VM
Could not reserve enough space for objectheap
- 解决方法是改小vm需要的内存
- 在3里面配置vm的文件是
/usr/local/nexus/nexus-3.19.1-01/bin/nexus.vmoptions
,修改前三行内容为
1 2 3
| -Xms128m -Xmx128m -XX:MaxDirectMemorySize=256m
|
初始化密码问题
- 这个问题有点坑,nexus2时默认的账号密码是 admin.admin123,但是到了3在安装完成后会有一个随机的密码,在第一次登陆时进入引导流程,修改密码。
- 可以通过vim直接打开文件:
vim /usr/local/nexus/sonatype-work/nexus3/admin.password
。
- 一个现象是修改密码后找不到这个文件了,不排除是删掉了。
外部访问问题
- 默认情况下8082(我改了端口号)端口是没有暴露出来的,
vim /etc/sysconfig/iptables
中添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 8082 -j ACCEPT
配置文件的位置
xxx/nexus-3.19.1-01/etc/nexus-default.properties
,里面可以改端口号等信息。
启动方式
- 进入
/usr/local/nexus/nexus-3.19.1-01/bin
- 执行
./nexus run
。start指令似乎不是我想象的效果。
使用
同时使用多个私服
账密信息获取
- servers标签内记录的主要是账号密码这样的信息,但是因为两个私服都有类似
thirdparty
这样的仓库,在上传第三方jar到仓库的时候就遇到了如何取账号密码信息的问题。
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://192.168.2.130:8082/repository/thirdparty/ -DrepositoryId=mini-thirdparty
- 上面是命令行,核心的是
-DrepositoryId
,它代表要用settings中servers标签下哪个server的配置。显然取的是账户为admin的这个来用。
1 2 3 4 5 6 7 8 9 10
| <server> <id>thirdparty</id> <username>develop</username> <password>develop</password> </server> <server> <id>mini-thirdparty</id> <username>admin</username> <password>admin</password> </server>
|
提交jar
1 2 3 4 5 6 7 8 9 10
| <distributionManagement> <repository> <id>mini-releases</id> <url>http://192.168.2.130:8082/repository/maven-releases/</url> </repository> <snapshotRepository> <id>mini-snapshots</id> <url>http://192.168.2.130:8082/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
|
- 这是一段标准的提交配置,可见这个ID就是server里面配置的,真正决定提交到什么仓库的是URL,id只是用来取账密信息。
mirror的设置
mirrorOf
标签用来标注这个镜像是谁的,下面的例子中值是central,所以它就是中央仓库的镜像。国内用阿里的比较多。
1 2 3 4 5 6
| <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
|
- 对于私服来说,它可以代理任何的外部仓库,包括中央仓库。因此可以配置成这样,*是个通配符。
- 需要注意的是,如果私服要验证信息,那么同样需要在servers中设置同id的验证信息。
1 2 3 4 5 6
| <mirror> <id>nexus-mini</id> <mirrorOf>*</mirrorOf> <name>Nexus mini</name> <url>http://192.168.2.130:8082/repository/maven-public/</url> </mirror>
|
- 其实在nexus中maven-public这个仓库是个group,它包含了release、snapshot和maven-central,而maven-central可以设置代理,就可以设置成上面的aliyun的url。
- 但是需要注意的是,其它几个仓库的验证信息并不会因为配置了maven-public的而忽略。