公司肯定都有自己封装的一堆工具项目,或者会需要从中央仓库下载一些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中,修改调试到正式可用后,去掉关键词发布一下就搞定了。
就到这里吧,初学,有什么不对的地方欢迎指正,错误是正确他妈妈~~~