• nexus搭建maven私服及私服jar包上传和下载


    nexus搭建maven私服及私服jar包上传和下载

    标签: nexus管理mavensnapshot
    分类:

    一、nexus搭建maven私服及相关介绍

    1、下载nexus-2.12.0-01-bundle.zip(版本随意)

    2、以管理员身份运行cmd,cd进入解压文件的bin目录,执行nexus.bat install



    若未以管理员身份运行则安装不了,因为权限不够


    3、开启nexus服务,访问nexus服务器地址:http://localhost:8081/nexus/,默认登录账户为admin,默认密码为admin123,登录成功后点击Repositories可看到私服有以下类型仓库:



    1)hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括releases和snapshot两部分,Releases公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
    2)proxy,代理仓库,用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件。
    3)group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组。
    4)virtual(虚拟):兼容Maven1 版本的jar或者插件

    4、nexus仓库默认在解压文件的sonatype-work exusstorage目录中:


    apache-snapshots:代理仓库,存储snapshots构件,代理地址https://repository.apache.org/snapshots/

    central-m1:virtual类型仓库,兼容Maven1 版本的jar或者插件

    releases:本地仓库,存储releases构件。

    snapshots:本地仓库,存储snapshots构件。

    thirdparty:第三方仓库

    public:仓库组


    二、向maven私服上传写好的jar

    1、需求:将项目子模块ssm_dao这个工程打包成jar并上传到私服

    2、第一步:需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户

    和密码。此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。

    在maven文件夹下apache-maven-3.5.0confsettings.xml文件添加一下代码:(<servers>节点内)

    1. <server>  
    2.      <!--releases 连接发布版本项目仓库-->  
    3.       <id>releases</id>  
    4.       <!--访问releases这个私服上的仓库所用的账户和密码-->  
    5.       <username>admin</username>  
    6.       <password>admin123</password>  
    7.     </server>  
    8.     <server>  
    9.     <!--snapshots 连接测试版本项目仓库-->  
    10.       <id>snapshots</id>  
    11.       <!--访问releases这个私服上的仓库所用的账户和密码-->  
    12.       <username>admin</username>  
    13.       <password>admin123</password>  
    14.     </server>  

    3、在ssm_dao的pom.xml文件中添加一下代码:

    1. <!--将ssm_dao上传私服  -->  
    2.  <distributionManagement>   
    3.  <!--pom.xml这里<id> 和 settings.xml 配置 <id> 对应  -->  
    4.     <repository>  
    5.         <id>releases</id>  
    6. <url>http://localhost:8081/nexus/content/repositories/releases/</url>  
    7.     </repository>   
    8.     <snapshotRepository>  
    9.         <id>snapshots</id>  
    10. <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>  
    11.     </snapshotRepository>   
    12.  </distributionManagement>  

    根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库。

    如:ssm_dao的工程的版本号为0.0.1-SNAPSHOT,则ssm_dao打包好的jar在本地仓库snapshots可见

    1. <modelVersion>4.0.0</modelVersion>  
    2.  <parent>  
    3.    <groupId>com.nocol</groupId>  
    4.    <artifactId>ssm_parent</artifactId>  
    5.    <version><span style="color:#FF0000;">0.0.1-SNAPSHOT</span></version>  
    6.  </parent>  
    7.  <artifactId>ssm_dao</artifactId>  

    4、正式上传:首先启动nexus服务,对ssm_dao工程执行deploy命令,看到BUILD SUCCESS则表示上传成功了


    此时在 exus-2.12.0-01-bundlesonatype-work exusstoragesnapshots下能找到,但是在本地仓库并没有,因为jar包上传在maven私服,接下来介绍如何能让自己上传的jar出现在本地仓库

    如图:(本地snapshots)


    如图:(私服)


    5、此时将ssm_dao工程关闭,可以看到依赖ssm_dao的ssm_service工程出现感叹号(缺少了ssm_dao.jar)

    三、maven私服自动下载jar包
    1、在没有配置nexus之前,如果本地仓库没有,去中央仓库下载。有了私服之后,本地项目首先去本地仓库找jar,如果没有找到则连接私服从私服下载jar包,如果私服没有jar包私服同时作为代理服务器从中央仓库下载jar包,这样提高了下载速度,项目连接私服下载jar包的速度要比项目连接中央仓库的速度快的多。

    2、nexus中包括很多仓库,如上面介绍的hosted中存放的是自己发布的jar包及第三方公司的jar包,proxy中存放的是中央仓库的jar,为了方便从私服下载jar包可以将多个仓库组成一个仓库组,每个工程需要连接私服的仓库组下载jar包,这样在项目中配置下载路径只需要给仓库组路径即可,即:

    http://localhost:8081/nexus/content/groups/public/

    3、第一步:在客户端的setting.xml中配置私服的仓库,由于setting.xml中没有repositories的配置标签需要使用profile定义仓库(profile节点内)

    1. <profile>     
    2.     <!--profile的id-->  
    3.    <id>dev</id>     
    4.     <repositories>     
    5.       <repository>    
    6.         <!--仓库id,repositories可以配置多个仓库,保证id不重复-->  
    7.         <id>nexus</id>     
    8.         <!--仓库地址,即nexus仓库组的地址-->  
    9.         <url>http://localhost:8081/nexus/content/groups/public/</url>     
    10.         <!--是否下载releases构件-->  
    11.         <releases>     
    12.           <enabled>true</enabled>     
    13.         </releases>     
    14.         <!--是否下载snapshots构件-->  
    15.         <snapshots>     
    16.           <enabled>true</enabled>     
    17.         </snapshots>     
    18.       </repository>     
    19.     </repositories>    
    20.      <pluginRepositories>    
    21.         <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->  
    22.         <pluginRepository>    
    23.             <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->  
    24.             <id>public</id>    
    25.             <name>Public Repositories</name>    
    26.             <url>http://localhost:8081/nexus/content/groups/public/</url>    
    27.         </pluginRepository>    
    28.     </pluginRepositories>    
    29.   </profile>    

    使用profile定义仓库需要激活才可生效,再在profile结束标签后添加一下代码:

    1. <!--使用profile定义仓库需要激活才可生效-->  
    2.   <activeProfiles>  
    3.    <activeProfile>dev</activeProfile>  
    4.  </activeProfiles>  

    4、配置成功后通过eclipse查看ssm_service工程下pom.xml的Effective POM选项,可看到如下代码:

    1. <repositories>  
    2.     <repository>  
    3.       <releases>  
    4.         <enabled>true</enabled>  
    5.       </releases>  
    6.       <snapshots>  
    7.         <enabled>true</enabled>  
    8.       </snapshots>  
    9.       <id>nexus</id>  
    10.       <url>http://localhost:8081/nexus/content/groups/public/</url>  
    11.     </repository>  
    12.     <repository>  
    13.       <snapshots>  
    14.         <enabled>false</enabled>  
    15.       </snapshots>  
    16.       <id>central</id>  
    17.       <name>Central Repository</name>  
    18.       <url>https://repo.maven.apache.org/maven2</url>  
    19.     </repository>  
    20.   </repositories>  
    21.   <pluginRepositories>  
    22.     <pluginRepository>  
    23.       <id>public</id>  
    24.       <name>Public Repositories</name>  
    25.       <url>http://localhost:8081/nexus/content/groups/public/</url>  
    26.     </pluginRepository>  
    27.     <pluginRepository>  
    28.       <releases>  
    29.         <updatePolicy>never</updatePolicy>  
    30.       </releases>  
    31.       <snapshots>  
    32.         <enabled>false</enabled>  
    33.       </snapshots>  
    34.       <id>central</id>  
    35.       <name>Central Repository</name>  
    36.       <url>https://repo.maven.apache.org/maven2</url>  
    37.     </pluginRepository>  
    38.   </pluginRepositories>  

    表示当该工程需要的jar在本地仓库没有时,根据这里配置的访问路径自动去maven私服下载。此时再update一下父工程,发现ssm_service的感叹号消失(此时ssm_dao还是close状态),说明ssm_service工程已经在maven私服内下载了ssm_dao.jar,同时在本地仓库也存在了该jar。

  • 相关阅读:
    编写可维护的JavaScript代码(部分)
    Canvas
    初识ES6
    vue.js入门上
    ASP.NET中的物理路径与虚拟路径
    慎用标签选择器
    PHP服务器负载判断
    mac下安装redis
    mac安装memcache
    MySQL定时检查是否宕机并邮件通知
  • 原文地址:https://www.cnblogs.com/zhangtan/p/7502254.html
Copyright © 2020-2023  润新知