maven私服的搭建与使用

安装

  • 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的而忽略。
# Java
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×