使用Nexus搭建maven私服

使用Nexus搭建maven私服

版本选择

虽然Nexus官网上最新版本已经到了3.x,但是比较稳定可靠好用的还是2.x版本,同时Pro版本对我们来说暂时也没有必要,因此下载最新的2.x版本即可:https://download.sonatype.com/nexus/oss/nexus-latest-bundle.tar.gz
个人吐槽一下:安装了3.x版本,但是很多功能居然找不到入口,比如upload artifact。

安装

  1. 解压: tar -xzvf nexus-2.14.11-01-bundle.tar.gz
    在这里插入图片描述
  2. 启动服务:
    cd nexus-2.14.11-01/bin
    ./nexus start
    在这里插入图片描述
  3. 检查服务是否已经正常启动:
    在浏览器中输入:http://x.x.x.x:8081/nexus,如果可以看到欢迎界面,说明 Nexus 安装成功了。

配置

1、 maven配置: settings.xml


    
      nexusMirror
      local nexus mirror
      http://x.x.x.x:8081/nexus/content/groups/public/
      repository configured here will visit mirror instead of central repository even mirror unavailable<-->
      *
    
                      

    
      nexusMirror
      admin
      admin123
      664
      775
      
    

以上是当前使用的配置,针对其中的配置做一下说明:

  1. x.x.x.x是nexus服务器的IP
  2. Mirror:配置镜像
    id:mirror的标识,不能跟其他的Mirror重复,用来跟server id匹配获取用户名密码等信息
    name:可以随便配置
    mirrorOf:*表示所有的请求都转向url元素配置的url请求,实际上就是完全使用私服。当然也可以配置成一部分使用私服一部分使用外部服务器,此处配置为完全使用私服是为了更好的控制版本。
  3. Server:配置服务器访问密码:
    id:server的ID,将会跟mirror或者repository的id匹配
    username/password: 用户名密码
    此项是否配置取决于anonymous用户的权限,如果该用户具备所有repository的read权限,那么此项设置没有必要。

NOTE:
settings.xml可以存在于两个地方:
m a v e n . h o m e / c o n f / s e t t i n g s . x m l 和 {maven.home}/conf/settings.xml和 maven.home/conf/settings.xml{user.home}/.m2/settings.xml,前一个称为全局配置,后一个称为用户配置,当两个都存在的时候,内容会merge,以用户配置为准。
简单的话,直接放在${user.home}/.m2即可。

2、Nexus repository配置
首先,配置组,把3rdparty加入到public组并保存(此处的public即settings.xml文件中mirror指定的url):
使用Nexus搭建maven私服_第1张图片
接下来修改3rdparty的属性以便加入jar包:
使用Nexus搭建maven私服_第2张图片
最后上传jar包,完成私服的搭建。
使用Nexus搭建maven私服_第3张图片

3、 典型问题

  1. 形如[15.0,19.20)的依赖设置不生效
    原因:nexus上没有有效的maven-metadata.xml文件,一般是批量导入文件导致。
    解决办法:删除maven本地缓存,删除nexus对应artifact,重新手工添加,让nexus自己生成maven-metadata.xml文件。

  2. 怎样批量导入
    比如maven本地缓存中已有下载好的jar包,可以把本地缓存的内容拷贝到对应的repository的存储路径下去。比如上面所说的3rdparty, 存储路径在congiguration中可以查到:
    使用Nexus搭建maven私服_第4张图片
    拷贝后最好把一些无用的文件删除掉,比如.lastUpdated文件
    然后选择repository,右键update index
    使用Nexus搭建maven私服_第5张图片

  3. 编译过程中出现类似MojoExecutionException :java.util.zip.ZipException: error in opening zip file xxx的错误
    原因:下载的jar包有问题
    解决办法:删除maven的本地缓存,重新下载,如果nexus上的jar包也有问题,删除,重新上传

  4. 采用“GAV Parameters”方式上传jar包编译时提示package does not exist问题
    原因:采用该方式上传,pom文件中只有GroupID,Artifact ID,Version,没有dependency,导致编译时没有下载依赖的jar包导致package找不到。
    解决办法:尽量采用POM方式上传,实在不行,上传完成后覆盖该pom文件,然后update index

设置为系统服务

在/usr/lib/systemd/system中增加nexus.service文件,文件中添加以下内容:

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
ExecStart=/home/admin123/nexus-2.14.11-01/bin/nexus start
ExecStop=/home/admin123/nexus-2.14.11-01/bin/nexus stop
User=admin123
Restart=on-abort

[Install]
WantedBy=multi-user.target

然后执行:systemctl daemon-reload重新load服务;就可以用systemctl start/stop nexus的方式启停服务了。
但是此时启动服务会无法启动,查看/$NEXUS_HOME/logs/wrapper.log会发现如下错误:

wrapper  | Launching a JVM...
wrapper  | Unable to start JVM: No such file or directory (2)
wrapper  | JVM exited while loading the application.

修改/home/admin123/nexus-2.14.11-01/bin/jsw/conf/wrapper.conf中的Java路径为绝对路径即可:

wrapper.java.command=/usr/java/jdk1.8.0_151/bin/java

其中java路径用实际路径替换。也可以把服务设置为开机启动:

sudo systemctl enable nexus.service

参考

参考信息:
[1]: http://maven.apache.org/settings.html
[2]: https://www.cnblogs.com/rexfang/p/7625696.html

你可能感兴趣的:(Java,maven)