Maven使用---nexus私服搭建

公司肯定都有自己封装的一堆工具项目,或者会需要从中央仓库下载一些jar但是某些包在中央仓库中又不存在,这个时候我们的团队又都需要用到这些jar包,总不能每个人都拿一个jar然后手动扔到自己的本地仓库吧?特别是公司的jar,维护了点,给大家都发一份,大家都发布到自己的本次仓库一份?太恶心了,有没有。此处,我们有必要引入私服了。

私服的搭建

环境准备
nexus下载:https://www.sonatype.com/download-oss-sonatype (我用的3.9.0-01)
centos系统:centos7.x
JDK:1.8
安装
解压安装包

tar -zxvf nexus-3.9.0-01-unix.tar.gz
cd nexus-3.9.0-01/
ls

看到解压后的内容如下
在这里插入图片描述
此时,如果我们不配置端口,日志/文件路劲等,那么我们就可以直接使用了,没错,默认就是能用的。但我还是说几个配置下的东西吧。
bin目录下的文件
nexus:可执行文件,启动停止nexus服务
nexus.vmoptions:这个里面可以配置JVM大小,日志位置,仓库位置等,详细看下图
在这里插入图片描述
nexus默认端口号8081,如果需要修改,在etc/nexus-default.properties 文件中修改即可
在这里插入图片描述
配置

先启动nexus服务
nexus可选项:bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

> bin/nexus start

接下来在浏览器中输入http://ip:端口 进行访问
在这里插入图片描述
点击Sign in 登录默认用户名密码 admin/admin123
在这里插入图片描述
登录成功后看页面左上
在这里插入图片描述
点击立方体后看到的菜单,主要都是关于jar包的使用上传等,说白了,我们工作中最常用到就就是这里了,查查有哪个jar,看看jar的版本号等等信息
设置按钮相当于后台管理,里面主要是对仓库创建删除,用户角色权限等等的管理。
先看后台管理
大页面我就不截图了,太占地了

  • Blob Stores
    这个地方管理的是对应于文件系统的jar存储位置,default是默认位置,之前在看文件目录中bin下的nexus.vmoptions文件有对应的地址,我们也可以创建新的地址,点击create blob store,其中name就是个别名,path对应的就是文件系统的地址,例如/home/nexus3
  • Repositories
    这个地方放的是jar包仓库,仓库的类型共有三种:
    在这里插入图片描述
    group:这个是组的概念,就是说可以把其他多个仓库整合到一起使用
    hosted:这个是我们发布jar的仓库,比如一些第三方jar,自己封装的jar,放在这里
    proxy:代理仓库,我们的仓库默认可是空的,而中央仓库或者阿里镜像都已经有大部分常用的jar包了,我们只要代理对应的仓库,那么在程序中引用包时候,nexus就会到远程仓库下载到代理仓库,这样我们工作时候一个人下载,其他人只需要从内网传输jar就可以了。

一般来说我们需要创建两个仓库

1> hosted类型的仓库,用于我们存放从远程仓库中找不到的第三方jar包
Create Repository—>maven2(hosted):
name:自己写个名字比如3rdRepo
version policy:这里选择Release就好
blob store:选择存在文件系统的哪个位置,自己创建的或者default
deployment policy:这个很重要,我们要选择Allow redeploy,否则发布jar的时候报错
配置完成后保存即可

2> proxy类型的仓库,默认代理的中央仓库在国外,我们下载实在是太慢,我们需要把阿里的镜像做一个代理,就能很快的下载jar了。这个我们在配置maven的时候多少也有些了解。
Create Repository—>maven2(proxy):
和hosted中的区别:
没有deployment policy选项,这个代理我们肯定是不要手动上传jar包了。
Remote storage:填写阿里镜像地址http://maven.aliyun.com/nexus/content/groups/public
其他的都一样

这样我们就拥有了maven-releases(上传我们开发的正式版的jar)、maven-snapshots(开发版的jar)、maven-central(中央仓库代理)、maven-public和我们新创建的maven-aliyun、maven-3rdRepo。

此时我们打开maven-public,将自己添加的两个库添加进去,调整顺序,maven-releases—>maven-snapshots—>maven-aliyun—>maven-3rdRepo—>maven-central
好的,仓库配置完成!!!!

  • 用户权限管理
    对应的Users、Roles,这里我们尽量避免直接用admin用户操作,所以创建一个普通用户,并创建一个角色,给角色分配上三个权限,即可上传jar
    1> nx-api-all
    2> nx-commponent-upload
    3> nx-repository-view-*-*-*
    这部分大家做web,肯定接触过不少的用户权限管理了,千篇一律,就不多写了,看一看都明白

前面的四方体
如果不是仓库管理人员,平时不上传jar,只是使用仓库的话,那么上面的都不用关注,只看这里就好,默认的不登录是游客身份访问。因为所有的jar都可以在这里查,查到的jar直接记录号坐标,在项目的pom文件中引入即可。
大致说下里面几个菜单

  • Search
    里面默认有一个关键词查询的输入框,输入任意关键词,即可到所有仓库中模糊匹配符合的jar包,可以添加新的条件用,不过没必要
    点开search—>maven:这里的查询条件非常全,大家试试用就明白了
  • Browser
    这里分配列出了每个仓库,我们可以点击任何一个,即可看到下面所有的jar

这部分才是工作中最常用的部分,两部分都配置好,那么可以配置本地的maven和maven项目了

注:
我这里直接用的是nexus-3.x,看网上大家说的,2.x的库路劲等和3.x不一样,如果是2.x的朋友升级3.x那么,你需要配置个Nginx,做个反向代理,这样,项目组的人依然可以使用原来的路劲访问到jar包了

Maven配置(setting.xml)

这不分也可以分成两部分人员,如果我们工作中维护这第三方jar或者公司内部封装的jar等,那么我们可以做如下配置

<!-- 在servers中配置,相当于将我们访问系统的用户注册进来 -->
<servers>
	<server>
	  <id>nexusDeploy</id>
	  <username>deployuser</username>
	  <password>123456</password>
	</server>
</servers>
...
<!-- 配置镜像仓库,就是我们下载jar的地方
mirrorOf指定了具体仓库的优先匹配,central为除本次外jar下载地址,*为拦截所有
 -->
<mirrors>
	<mirror>
		<id>nexus</id>
		<name>Nexus mine</name>
		<mirrorOf>maven-public</mirrorOf>
		<url>http://192.168.12.xxx:8081/repository/maven-public/</url>
	</mirror>
	<mirror>
          <id>nexus-aliyun</id>
          <name>Nexus aliyun</name>
          <mirrorOf>central</mirrorOf>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
</mirrors>
...
<!-- 这里我们把配置好的maven-public注册进来,这个仓库是整合了所有仓库的汇总仓库 -->
<profiles>
	<profile>
      <id>publicRepo</id>

      <repositories>
        <repository>
          <id>maven-public</id>
          <url>http://192.168.12.xxx:8081/repository/maven-public/</url>
          <releases>
          	<enabled>true</enabled>
          </releases>
          <snapshots>
          	<enabled>true</enabled>
          	<updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
     	<pluginRepositories>
        <pluginRepository>
          <id>maven-public</id>
          <url>http://192.168.12.xxx:8081/repository/maven-public/</url>
          <releases>
          	<enabled>true</enabled>
          </releases>
          <snapshots>
          	<enabled>true</enabled>
          	<updatePolicy>always</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
  </profile>
</profiles>
<!-- 激活配置 -->
<activeProfiles>
  <activeProfile>publicRepo</activeProfile>
</activeProfiles>

做好上面的这些配置,我们就可以在项目中首先通过私服下载jar包,私服不通了,我们也可以到阿里镜像中去下载,上面的用户配置主要是之后的发布jar是否会用到

如果是只是使用仓库中的jar,没有维护工作的话,我们可以只配置其中镜像部分

<mirrors>
	<mirror>
        <id>nexus</id>
        <name>Nexus keyten</name>
     	<mirrorOf>central</mirrorOf>
      	<url>http://192.168.12.xxx:8081/repository/maven-public/</url>
    </mirror>
    <mirror>
          <id>nexus-aliyun</id>
          <name>Nexus aliyun</name>
          <mirrorOf>central</mirrorOf>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
 </mirrors>

没了就是这一点就好了

项目配置和第三方jar上传

第三方jar上传命令:
mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackaging=jar -Dfile=E:\ojdbc6.jar -Durl=http://192.168.12.xxx:8081/repository/keytenStore/ -DrepositoryId=nexusDeploy
注:-DrepositoryId代表的就是setting.xml中配置的用户信息的ID值

项目中使用:
在pom中加入下面的配置

<distributionManagement>
    <repository>
        <id>nexusDeploy</id>
        <name>releases</name>
        <url>http://192.168.12.xxx:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexusDeploy</id>
        <name>snapshots</name>
        <url>http://192.168.12.xxx:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

然后项目的版本号如果是

<version>1.0.0-SNAPSHOT</version>

那么在idea中点击deploy则直接上传到maven-snapshots中
版本号去掉SNAPSHOT则上传到maven-releases中
这样我们就可以将没有保证稳定的版本放到snapshots中,修改调试到正式可用后,去掉关键词发布一下就搞定了。

就到这里吧,初学,有什么不对的地方欢迎指正,错误是正确他妈妈~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值