下载安装:
- 下载安装包:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw;
- 解压缩
tar -xzvf nexus-3.9.0-01-unix.tar.gz
- 修改配置文件
cd nexus-3.9.0-01/etc/ vim nexus-default.properties //默认为8081端口;
- 启动
nexus-3.9.0-01/bin/nexus run
- 浏览器访问:http://127.0.0.1:8081/
默认登录用户名 admin 默认密码 admin123
登录后进入设置页面的Repositeres仓库中,出现如下代表安装成功:
image.png
配置Nexus
-
私服工作原理:
配置Nexus之前,需要先了解一下私服的工作原理,如下图:
image.png
- 找依赖包的流程: 首先在
本地仓库
中找,如果没命中,那么就找远程私服
;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy; - Nexus仓库类型介绍:
默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。- hosted(宿主仓库库) :存放本公司开发的jar包(正式版本、测试版本)
- proxy(代理仓库):代理中央仓库、Apache下测试版本的jar包
- group(组仓库):使用时连接组仓库,包含Hosted(宿主仓库)和 Proxy(代理仓库)
创建proxy代理仓库
- 该代理远程地址是aliyun的maven仓库地址:
https://maven.aliyun.com/repository/public
注意:选择maven2(proxy)
创建
image.png
image.png
配置仓库组
-
maven-public
为仓库组, 进入该组中,将刚刚创建的aliyun-public
仓库加入该组中.先暂时将maven-center
仓库从该组中移出去.最后该组中只有三个仓库,一个代理aliyun仓库,两个本地仓库maven-releases
和maven-snapshots
;
image.png
- ** 至此,Nexus基本就这么配置好了,主要在Group组中配置一个代理私服。**
配置下载依赖 setting.xml
<mirror>
<id>nexus-myself</id>
<!--*指的是访问任何仓库都使用我们的私服-->
<mirrorOf>*,!spring-milestones</mirrorOf>
<name>Nexus myself</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</mirror>
全局配置下载依赖(即项目pom无需配置)
- 在maven的
setting.xml
文件中配置私服配置,这种方式配置后所有本地
使用该配置的maven项目的pom
文件都无需
配置私服下载相关配置。
<!-- 全局配置下载依赖 -->
<profiles>
<profile>
<id>mycof</id>
<repositories>
<!-- 私有库地址-->
<repository>
<id>nexus</id>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件库地址-->
<pluginRepository>
<id>nexus</id>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--激活profile-->
<activeProfiles>
<activeProfile>mycof</activeProfile>
</activeProfiles>
上传jar包配置
- 对于中央仓库没有的jar包,需要我们自己将jar包发布到私服中去,其中jar包主要分为两类:
- 一类是
本地自己开发
供给项目组其余同事使用,这种直接配置项目的pom文件和maven的setting文件,之后deploy
发布即可发布到; - 另一类是
第三方jar包
,可以直接使用web页面上传
并设置对应GAV即可;
- 一类是
本地maven开发的项目jar上传配置
- maven的
setting.xml
文件配置
<servers>
<!-- 配置想内部maven私服上传jar包的权限相关 liangxifeng start-->
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<!-- 配置想内部maven私服上传jar包的权限相关 liangxifeng end-->
</servers>
- 项目中的
pom
文件配置, 我们这里以mavn多模块演示代码为例,注意:这里需要在项目module的最顶层parent
中的pom添加:
<!-- 将本项目jar包上传到本地maven私服 -->
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
然后在parent项目下执行:mvn deploy -Dmaven.test.skip=true
执行效果如下:
开始部分两个pom包和四个jar,两个pom包负责分组配置没有实际java逻辑代码.

中间省略...
执行结束部分如下代表成功:

再次访问自己搭建的本地私服:

-
这样在
api-member-service-impl
具体实现项目中就可以执行maven clean package
就不会报找不到api-member-server
的jar包依赖了. -
注意: 1. 这里只有Snapshot的仓库上传成功,Release仓库并没有上传成功,这是因为版本号名称结尾有SNAPSHOT,默认以这个结尾是不会上传到Release仓库去的,去除就会上传到Release仓库且不会上传到快照仓库
-
注意 2. Release仓库默认不支持重复发布,可配置
-
注意3.
setting
中server标签下的id
要和pom
文件中仓库配置的id相同,即指定上传到哪个仓库
第三方jar包上传
-
对于第三方jar包的上传采用nenus提供的web界面上传,上传成功后需要使用该jar包的话,依赖中填写自定义的GAV即可
image.png
总结:
-
在使用idea maven创建项目(注意:而不是springboot Initializr)创建多module, 多模块之间互相依赖时, 需要将这些被依赖的jar包放入自己内部的maven私服仓库. 我创建的maven 多项目依赖目录结构如下:
image.png
- 以上目录结构说明:
parent : 父级pom
项目, pom中包含spring-boot父级依赖以及所以子项目需要的公共依赖, (父项目添加依赖, 子项目就不用添加了)
api-service: 公共接口pom
项目, 包含api-member-service
interface接口jar
项目和api-order-service
interface接口jar
项目, 这两个项目只有接口没有实现, 不需要有项目入口Application
启动文件.
api-member-service-impl: member服务接口实现war
或jar
项目
api-order-service-impl: order服务接口实现war
或jar
项目 - 以上几个项目, 需要向tomcat服务器不熟的其实就是 api-member-service-impl: 和 api-order-service-impl: 两个项目, 可以进入到这两个项目中单独执行
mvn clean package
打包. 但是前提是必须在parent
项目下执行mvn deploy -Dmaven.test.skip=true
将所有子项目依赖的jar
包发布到 nexus 私服中. - 项目地址: https://github.com/liangxifeng833/springcloud/tree/master/parent
网友评论