龙空技术网

Maven发布公共jar包到私服仓库

程序员日记 224

前言:

目前我们对“maven访问本地仓库”大体比较重视,小伙伴们都需要分析一些“maven访问本地仓库”的相关内容。那么小编也在网络上汇集了一些对于“maven访问本地仓库””的相关资讯,希望我们能喜欢,各位老铁们快快来学习一下吧!

简介

一个使用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>;/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>;/url>        </pluginRepository>    </pluginRepositories>     <!--#将项目打包上传到nexus私服-->    <distributionManagement>          <!-- 两个ID必须与 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->        <repository>            <id>nexus-releases</id>            <url>;/url>        </repository>        <snapshotRepository>            <id>nexus-snapshot</id>            <url>;/url>        </snapshotRepository>    </distributionManagement>
setting.xml中的配置修改
<settings xmlns=";      xmlns:xsi=";      xsi:schemaLocation="                          ;>	<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>;/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>;/url>              <releases>                  <enabled>true</enabled>              </releases>               <snapshots>                  <enabled>false</enabled>              </snapshots>           </repository>          <repository>              <id>nexus-snapshots</id>              <url>;/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>;/url>          <releases>              <enabled>true</enabled>          </releases>           <snapshots>              <enabled>true</enabled>          </snapshots>        </pluginRepository>         <pluginRepository>           <id>nexus-snapshots</id>          <url>;/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服务器上查看

标签: #maven访问本地仓库