Nexus:

 Nexus是maven仓库管理器,如果你使用maven,你可以从中央仓库下载所需用的构件(artifact),但这通常不是一个好的做法,你应该在本地假设一个maven仓库服务器,在代理远程仓库的同时维护本地仓库,节省时间,减少网络占用,nexus就可以满足这样的需求。

 此外nexus还提供了一个强大的仓库管理功能,构件搜索功能,它基于rest,友好的ui是一个extjs的rest客户都安,它占用比较少的内存,基于简单文件系统而非数据库,这些优点使其称为最流行的maven仓库管理器。

 nexus不是maven的核心概念,它仅仅是一种衍生出来的特殊maven仓库,对于maven来说,仓库只有两种,本地仓库和远程仓库。




maven使用私仓 maven私有库_数据库



 本地仓库就是我们在maven的settings.xml中配置的本地仓库地址,由于最原始的本地仓库是空的,maven必须至少有一个可用的远程仓库,才能执行maven命令下载到所需用的构件,中央仓库是maven默认的远程仓库。

 私服是假设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件有了私服之后,当maven需要下载构件时,直接请求私服,私服上存在则下载到本地,否则私服请求到远程中央仓库,将构件下载到私服,再提供给本地仓库下载。



maven使用私仓 maven私有库_maven使用私仓_02



 JBoos是一个开放源代码的应用服务器java.net是指java仓库和net仓库。

功能:
  • 节省外网带宽,大量对于外部仓库的重复请求会消耗带宽,利用私服代理外部仓库,可以消除对外的重复构件下载,降低带宽的压力。
  • 加速maven构件,不停地连接请求外部仓库十分耗时,利用私服,maven只检查给局域网地数据,提高构建地速度。
  • 部署第三方插件,当某个构件无法从任何一个外部远程仓库获得时,建立私服后,便可以将这些构件部署到私服,提供内部,aven项目使用。
  • 提供稳定性,增强控制,maven构件高度依赖于远程仓库,因此,当网络不稳定时,maven构建也会变得不稳定,甚至无法构建,私服缓存了大量构件,即暂时连不上公网,maven也可以正常允许。
  • 降低中央仓库的负荷,使用私服可以避免很多对中央仓库的重复下载,降低中央仓库的压力。
安装:

Host

网络信息

Maven

ens33:192.168.43.176

Nexus

ens33:192.168.43.104

Nexus:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables-save 
[root@localhost ~]# setenforce 0
[root@localhost ~]# tar -zxvf jdk-8u201-linux-x64.tar.gz  -C /usr/local/
[root@localhost ~]# vim /etc/profile
添加:
export JAVA_HOME=/usr/local/jdk1.8.0_201/
export JRE_HOME=/usr/local/jdk1.8.0_201/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mkdir /usr/local/nexus
[root@localhost ~]# tar -zxvf nexus-3.14.0-04-unix.tar.gz  -C /usr/local/nexus/
[root@localhost ~]# /usr/local/nexus/nexus-3.14.0-04/bin/nexus start
[root@localhost ~]# netstat -anput | grep 8081
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      46686/java          
[root@localhost ~]# firefox 192.168.43.104:8081
Singn in -->(默认用户名:admin,默认密码:admin123)



maven使用私仓 maven私有库_maven_03




maven使用私仓 maven私有库_maven_04



目录说明:
/usr/local/nexus/nexus-3.14.0-04/               #应用目录。
/usr/local/nexus/sonattpe-work/                 #工作目录(主要用于存放镜像仓库)。
/usr/local/nexus/sonattpe-work/nexus3/log       #日志目录(存放关于nexus各个模块的日志文件)。
#如果需要备份和迁移镜像仓库,则需要拷贝/usr/local//nexus/sonattpe-work/即可。
基础操作:
如果忘记admin密码了(恢复默认密码):
不要修改vim /usr/local/nexus/sonattpe-work/nexus3/db/security/user.pcl !!!
正确的操作:
[root@localhost ~]# cd /usr/local/nexus/nexus-3.14.0-04/
[root@localhost nexus-3.14.0-04]# java -jar ./lib/support/nexus-orient-console.jar

OrientDB console v.2.2.36 (build d3beb772c02098ceaea89779a7afd4b7305d3788, branch 2.2.x) https://www.orientdb.com
Type 'help' to display all the supported commands.
orientdb> connect plocal:../sonatype-work/nexus3/db/security admin admin

Connecting to database [plocal:../sonatype-work/nexus3/db/security] with user 'admin'...OK
orientdb {db=security}>     Update user set password="$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==" upsert where id="admin"


Updated record(s) '1' in 0.026000 sec(s).
orientdb {db=security}> exit
[root@localhost nexus-3.14.0-04]# ulimit -HSn 65536
用户管理:
点击齿轮–>Roles–>create role小三角—>nexus role–>(role id:developer,role name:developer,role descrlption:developer) -->available–>nx all -->create role–>users–>create local users —>(id:dev,First name:dev,lastname:dev,email:dev@nexus.cn,password:admin123,Conflrm Password:admin123,status:active)–>roles–>Available–>developer–>create local user:



maven使用私仓 maven私有库_数据库_05




maven使用私仓 maven私有库_maven使用私仓_06




maven使用私仓 maven私有库_数据库_07




maven使用私仓 maven私有库_java_08



发版:
Repositories–>maven relase–>hosted–>allow redeploy–save:



maven使用私仓 maven私有库_maven使用私仓_09




maven使用私仓 maven私有库_linux_10




maven使用私仓 maven私有库_linux_11



创建代理仓库:
Repositories–create repositories -->maven2(proxy)–>(name:aliyun,proxy:http://maven.aliyun.com/nexus/content/public/)–>create repositories:



maven使用私仓 maven私有库_java_12




maven使用私仓 maven私有库_linux_13



点击maven-public–>memeber repositoties–>aliyun–>把maven-central放到最下面:



maven使用私仓 maven私有库_java_14




maven使用私仓 maven私有库_数据库_15



搭建私服:

Host

网络信息

Maven

ens33:192.168.43.176

Nexus

ens33:192.168.43.104

Maven:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables-save 
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /usr/local/apache-maven-3.6.0/
[root@localhost apache-maven-3.6.0]# cd  conf/
[root@localhost conf]# cp settings.xml settings.bak
删除原先添加的aliyun的mirror。
添加:
<mirror>
  <id>nexus</id>
  <name>nexus maven</name>
  <url>http://192.168.43.104:8081/repository/maven-public/</url>
  <mirrorOf>*</mirrorOf>
</mirror>
在253行profiles标签里添加:
<profile>
  <id>nexusconf</id>

  <repositories>
    <repository>
      <id>nexus</id>
      <url>http://192.168.43.104:8081/repository/maven-public/</url>
      <releases>
        <enable>true</enable>
      </releases>
      <snapshots>
        <enable>true</enable>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>nexus</id>
      <url>http://192.168.43.104:8081/repository/maven-public/</url>
      <releases>
        <enable>true</enable>
      </releases>
      <snapshots>
        <enable>true</enable>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>
到288行,删除一个activeProfile,然后取消activeProfiles的注释,把activeProfile标签里的内容改成nexus
<activeProfiles>
    <activeProfile>nexusconf</activeProfile>
</activeProfiles>
[root@localhost conf]# rm -rf /root/.m2/repository/*
[root@localhost conf]# cd /root/bdqnweb/
[root@localhost bdqnweb]# mvn clean package
[INFO] Packaging webapp
[INFO] Assembling webapp [bdqnweb] in [/root/bdqnweb/target/bdqnweb]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/bdqnweb/src/main/webapp]
[INFO] Webapp assembled in [24 msecs]
[INFO] Building war: /root/bdqnweb/target/bdqnweb.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  09:17 min
[INFO] Finished at: 2019-11-23T17:31:18+08:00
[INFO] ------------------------------------------------------------------------
Nexus:
Search–>Maven(发现已经从阿里云仓库下载好了构件):



maven使用私仓 maven私有库_maven使用私仓_16



Maven:
上传包到Nexus私服的maven-snapshots仓库:
[root@localhost bdqnweb]# vim /usr/local/apache-maven-3.6.0/conf/settings.xml 
找到133行,在</servers>标签内添加:
<server>
  <id>nexus</id>
  <username>dev</username>
  <password>admin123</password>
</server>
[root@localhost bdqnweb]# vim pom.xml 
  <distributionManagement>
    <snapshotRepository>
      <id>nexus</id>
      <name>Nexus Snapshot</name>
      <url>http://192.168.43.104:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
    <repository>
      <id>nexus</id>
      <name>Nexus releases</name>
      <url>http://192.168.43.104:8081/repository/maven-releases/</url>
    </repository>
  </distributionManagement>
[root@localhost bdqnweb]# rm -rf /root/.m2/repository/*
[root@localhost bdqnweb]# mvn deploy
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:18 min
[INFO] Finished at: 2019-11-23T21:13:58+08:00
[INFO] ------------------------------------------------------------------------
Nexus:
查看上传的包:(Browse–>maven-snapshots)



maven使用私仓 maven私有库_数据库_17



Maven:
上传包到Nexus私服的maven-releases仓库:
[root@localhost bdqnweb]# vim pom.xml 
删除version标签中的napshots的内容只留一个1.0即可:
[root@localhost bdqnweb]# mvn deploy
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.539 s
[INFO] Finished at: 2019-11-23T21:22:44+08:00
[INFO] ------------------------------------------------------------------------
Nexus:
查看上传的包:(Browse–>maven-releases)



maven使用私仓 maven私有库_linux_18



添加第三方仓库:
Nexus:
点击齿轮–>repositories–>create repository–>maven2(hosted)–>(name:3rd,hosted:allow redeploy)–create repository:
点击齿轮–>repositories–>Maven-public–>available–>3rd—>到右边,跳到中央仓库上边–>Save:



maven使用私仓 maven私有库_maven_19




maven使用私仓 maven私有库_数据库_20




maven使用私仓 maven私有库_maven使用私仓_21




maven使用私仓 maven私有库_数据库_22



Maven:
[root@localhost bdqnweb]# vim /usr/local/apache-maven-3.6.0/conf/settings.xml 
找到272行在<repositories>标签内添加:
    <repository>
      <id>3rdnexus</id>
      <url>http://192.168.43.104:8081/repository/3rd</url>
      <releases>
        <enable>true</enable>
      </releases>
      <snapshots>
        <enable>true</enable>
      </snapshots>
    </repository>
找到138行,,在<servers>标签里添加:
<server>
  <id>3rdnexus</id>
  <username>dev</username>
  <password>admin123</password>
</server>
把包拖进去,放在/root下:
上传aliyun-sdk-oss-2.6.1.jar包到第三方仓库:
[root@localhost bdqnweb]# mvn deploy:deploy-file -DgroupId=com.aliyun.oss -DartifactId=aliyun-sdk-oss -Dversion=2.6.1 -Dpackaging=jar -Dfile=/root/aliyun-sdk-oss-2.6.1.jar -Durl=http://192.168.43.104:8081/repository/3rd/ -DrepositoryId=3rdnexus
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unrecognised tag: 'enable' (position: START_TAG seen ...<releases>\n            <enable>... @271:21)  @ /usr/local/apache-maven-3.6.0/conf/settings.xml, line 271, column 21
[WARNING] 
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< cn.bdqn.bdqnweb:bdqnweb >-----------------------
[INFO] Building bdqnweb Maven Webapp 1.0
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy-file (default-cli) @ bdqnweb ---
Uploading to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/2.6.1/aliyun-sdk-oss-2.6.1.jar
Uploaded to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/2.6.1/aliyun-sdk-oss-2.6.1.jar (470 kB at 1.9 MB/s)
Uploading to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/2.6.1/aliyun-sdk-oss-2.6.1.pom
Uploaded to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/2.6.1/aliyun-sdk-oss-2.6.1.pom (401 B at 7.2 kB/s)
Downloading from 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/maven-metadata.xml
Uploading to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/maven-metadata.xml
Uploaded to 3rdnexus: http://192.168.43.104:8081/repository/3rd/com/aliyun/oss/aliyun-sdk-oss/maven-metadata.xml (308 B at 8.8 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.130 s
[INFO] Finished at: 2019-11-23T21:39:08+08:00
[INFO] ------------------------------------------------------------------------
You have new mail in /var/spool/mail/root
Nexus:
查看上传的包:(Browse–>3rd)



maven使用私仓 maven私有库_linux_23