Windows下Nexus 3.X 搭建Maven私服

 

1什么是私服

公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的maven远程仓库,每个员工的电脑上安装maven软件并且连接私服服务器,员工将自己开发的项目打成jar并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件

 

2:私服优势

a 代理外部maven的中央仓库,你可以对外部中央仓库做过滤操作。

b 公司的开发人员不需要连接外网也可以从局域网的专属(自己安装nexus时新建的仓库)Repository下载依赖包。

c 可以发布模块或项目到自定义的专属仓库,供局域网内其他开发人员复用

d  节省外网带宽,大量的对于外部远程仓库的重复请求会消耗很大的带宽,利用私服代理外部仓库后,对外的重复构件下载得以消除,即降低外网带宽的压力。

e 部署第三方构件 如组织内部的生成的私有的构件肯定无法从外部仓库获取,OracleJDBC驱动由于版权原因不能发布到外网的中心仓库。建立私服之后便可以将这些构件部署到本地私服中,供内部的Maven项目使用。

 

3 访问流程

 

4 下载地址

https://www.sonatype.com/download-oss-sonatype

 

5 环境要求

JDK:  Java JDK8+

Maven: Apache Maven 3.0+

Nexusnexus-3.26.1

 

6 解压nexus

  选择合适版本 下载后解压即可 默认配置文件nexus-default.properties位于\nexus-3.26.1-02\etc下 如图

 

 

7 安装nexus服务

以管理员身份运行cmd 切换到 Nexus 程序目录 :

d:

cd  nexus-3.26.1-02\bin

nexus.exe /install   //安装服务
nexus.exe /start    //启动nexus服务

nexus.exe /stop    //停止nexus服务

过程会比较慢 , 请耐心等待几分钟左右 访问http://localhost:8081/ 访问nexus主页

 

8 登录nexus    

  默认密码  admin/admin123

 

9 仓库介绍

 

 

 

 

hosted宿主仓库,部署自己的jar包到这个类型的仓库,包括releases公司内部发行版本仓库以及第三方jar包 

proxy代理仓库,用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件。

group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组。用户仓库地址选择Group的地址,即可访问Group中配置的 所有仓库资源,访问顺序取决于配置顺序3.x默认Releases,Snapshots,Central,可在web页面配置 在web界面点开

 

1)Maven可直接从宿主仓库host下载构件,也可以从代理仓库proxy下载构件,而代理仓库间接的从远程仓库下载并缓存构件 
 2)为了方便,Maven可以从仓库组group下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容).

 

 

10 创建属于自己的三种类型仓库

  a 创建proxy仓库组

    

 

 

 

创建页面出来之后,页面上有2input框是必填的:

 

 

 

版本策略(Version Policy):

Release: 正式版本  一般选择release

Snapshot: 快照版本

Mixed: 混合模式

布局策略(Layout Policy):

Strict:严格     一般选择Strict

Permissive:宽松

 

 

高危预警:

【注意】:加入你想创建好几个proxy repository,以便于我可以加入更多的远程maven仓库到我的group 资源库中

唯一一点,就是你看你加入的proxy资源库哪个使用的是国内的maven仓库地址,哪个是国外的。当然国内的要放在国外的之前。

这样的加入group资源库的顺序就是  hosted资源库>国内proxy资源库>国外proxy资源库

 b 创建host仓库组

      

 

 

 

 

 

 

 

 c 创建group仓库组

 

 

 

 

此处的顺序控制了获取jar的顺序 非常重要  与前面的高危预警呼应

 

 

maven下的setting.xml文件和你自己项目中的pom.xml文件的关系:

    Ⅰ.settting.xml文件就是本地,电脑上的全局变量;而pom.xml文件就是局部变量。

    Ⅱ.自己创建的pom.xml文件肯定对于项目来说,优先使用的。然而pom.xml文件中如果没有指定jar要从哪里下载的话,也就是说没有配置镜像地址的话,当然只能去按照全局变量中定义的地址去找了

 

11 全局方式下载jar

a  配置setting文件

<servers>

<server>

 <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->

<id>nexus</id>

 <!-- 服务器认证的用户名 -->

<username>admin</username>

<!-- 服务器认证的用户对应的密码 -->

<password>admin123</password>

</server>

</servers>

 

 

<!--组资源库的url地址 id和name自定义,mirrorOf的值设置为central,写死的--> 

<mirror>

       <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->

<id>nexus</id>

<name>nexus repository</name>

<url>http://localhost:8081/repository/maven-public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

#配置私服仓库

 

<profile>

    <id>nexus</id>

    <repositories>

       <repository>

          <id>3rd_part</id>

<url>http://localhost:8081/repository/maven-public/</url>

          <releases><enabled>true</enabled></releases>

          <snapshots><enabled>true</enabled></snapshots>

        </repository>

    </repositories>

<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->

    <pluginRepositories>

       <pluginRepository>

          <id>central</id>

          <url>http://localhost:8081/repository/maven-public/</url>

          <releases><enabled>true</enabled></releases>

          <snapshots><enabled>true</enabled></snapshots>

       </pluginRepository>

   </pluginRepositories>

</profile>

 

#激活并使用

<activeProfiles>

<activeProfile>nexus</activeProfile>

</activeProfiles>

 

b  配置pom依赖包 执行下载 在本地仓库 查看是否下载下来

 

 

 

12 上传简单jar包到私服

a 配置nexus用户

<server>

 <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->

<id>nexus</id>

 <!-- 服务器认证的用户名 -->

<username>admin</username>

<!-- 服务器认证的用户对应的密码 -->

<password>admin</password>

</server>

 

b 请先配置maven的环境变量 以方便执行相关命令 配置方式 参考https://www.cnblogs.com/LexMoon/p/JavaMaven.html

c 打开命令行 参考并执行如下命令

mvn deploy:deploy-file

-DgroupId=com.csource

-DartifactId=commons-io-1.3.3

-Dversion=1.24

-Dpackaging=jar

-Dfile=D:\.m2\repository\commons-io\commons-io\1.3.2\commons-io-1.3.2.jar

-Durl=http://localhost:8081/repository/3rd_part/

-DrepositoryId=nexus

 

命令解释:

-DgroupId=sxd.jar 自定义

-DartifactId=jacob 自定义             

-Dversion=1.18  自定义 三个自定义,构成pom.xml的坐标            

-Dpackaging=jar 上传的类型是jar类型   

-Dfile=G:\jar\jacob-1.18.jar  jar的本地磁盘位置     

-Durl=http://localhost:8081/repository/3rd_part/  host仓库地址

-DrepositoryId=nexus    setting.xml文件中配置的用戶ID  

 

13 通过nexus界面发布jar包到私服

简单略过 请自己在页面尝试即可

 

      

 

14 打包项目发布到私服

a 配置nexus用户

<server>

 <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->

<id>nexus1</id>

 <!-- 服务器认证的用户名 -->

<username>admin</username>

<!-- 服务器认证的用户对应的密码 -->

<password>admin</password>

</server>

<server>

 <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->

<id>nexus2</id>

 <!-- 服务器认证的用户名 -->

<username>admin</username>

<!-- 服务器认证的用户对应的密码 -->

<password>admin</password>

</server>

 

 

b 配置pom.xml

 

<distributionManagement>

    <repository>

        <id>nexus1</id>

        <url>http://localhost:8081/repository/maven-releases/</url>

    </repository>

    <snapshotRepository>

        <id>nexus2</id>

        <url>http://localhost:8081/repository/maven-snapshots/</url>

</snapshotRepository>

</distributionManagement>

 

c 执行mvn deploy就可以发布到你自己的私服上

 

 

 

 

posted @ 2020-09-07 18:46  春意了无痕  阅读(307)  评论(0)    收藏  举报