Maven发布公共jar包到私服仓库
简介
一个使用maven制作框架包时,会有一个主项目,然后它有多个子项目框架组成,很少一个工具包一个工程,像springboot,springcloud都是这种结构,主项目用来管理一些依赖包的版本,这对于框架型项目来说是很必要的,而对于业务项目来说,因为目前都是推荐使用微服务的轻量方式,所以不建议用多项目绑定一个大项目的方式,而都是一个服务一个项目。
为什么要用远程仓库(私服)
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,这样就加大了中央仓库的负载和浪费了外网的带宽,如果网速慢的话还会影响项目的进程。为团队创建私服,可以让公司的团队共享一套构件,加快了项目搭建的进程。所以我们选择用Nexus创建私服。
部署nexus服务
为了演示,我们采用docker进行快速部署nexus服务,脚本如下
docker run --name nexus -it -d \
-p 18181:8081 \
-p 18182:8082 \
-v `pwd`/data:/nexus-data \
-v /etc/localtime:/etc/localtime:ro \
--restart unless-stopped \
sonatype/nexus3:latest
注意:我们这里映射的data目录需要赋予最大权限,不然访问会报权限错误
sudo chmod 777 data/
启动服务,访问页面第一次进入会让你修改密码
默认密码是在你安装的data目录下
pom.xml配置文件
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://172.16.10.54:18181/repository</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>nexus</id>
<url>http://172.16.10.54:18181/repository/maven-releases/</url>
</pluginRepository>
</pluginRepositories>
<!--#将项目打包上传到nexus私服-->
<distributionManagement>
<!-- 两个ID必须与 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->
<repository>
<id>nexus-releases</id>
<url>http://172.16.10.54:18181/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshot</id>
<url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
setting.xml中的配置修改
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>maven-public</id>
<name>maven-public</name>
<url>http://172.16.10.54:18181/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>maven-public</id>
<repositories>
<repository>
<id>nexus-releases</id> <!--正式仓库id-->
<!--name随便-->
<name>Nexus Release Snapshot Repository</name>
<!--地址是nexus中repository(Releases/Snapshots)中对应的地址-->
<url>http://172.16.10.54:18181/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<updatePolicy>always</updatePolicy>
</repository>
</repositories>
<pluginRepositories> <!--插件仓库地址,各节点的含义和上面是一样的-->
<pluginRepository>
<id>nexus-releases</id>
<name>Nexus Release Snapshot Repository</name>
<url>http://172.16.10.54:18181/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<updatePolicy>always</updatePolicy>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--激活配置-->
<activeProfiles>
<activeProfile>maven-public</activeProfile> <!--profile下的id-->
</activeProfiles>
</settings>
测试
我们可以重新刷新导入下jar包依赖,然后去nexus服务器上查看
评论