zoukankan      html  css  js  c++  java
  • Nexus3作为maven私有仓库和制品库

    一、部署 Nexus

    可以用来进行指定私服的中央地址、将自己的Maven实际项目推送到私服主流地址、从私服下载中央仓库的项目进行过程中的索引、从私服仓库下载所依赖的组件、将第三方项目jar上传到私服供其他开发组员使用。

    测试环境使用Docker安装部署

    docker run -d -p 8081:8081 --name nexus -v /data/volumes/nexus-data:/nexus-data sonatype/nexus3

    安装完成后默认的admin账号密码存储在了数据目录,获取初始化密码后更新账号密码。

    我们将默认的仓库全部删除掉,重新创建

    在创建之前说明下仓库类型  type:

    • hosted: 本地仓库,用于内部项目发布的仓库
    • proxy: 从远程中央仓库中找到数据的仓库,并拉取到本地
    • group: group类型的仓库,是一个聚合类型的仓库。它可以将前面我们创建hosted类型和proxy类型的仓库聚合成一个URL对外提供服务的统一仓库

    二、Nexus 作为maven私有仓库

    1、创建blob存储

    2、创建一个hosted类型的maven仓库

    点击Repository下面的 Repositories – Create repository – maven2(hosted) :

    Name: 定义一个名称 maven-local

    Online: 勾选。这个开关可以设置这个maven repo是在线还是离线。

    Maven2:这里有三种方式,Releases、SNAPSHOT、Mixed。

    • Releases: 一般是已经发布的Jar包
    • Snapshot: 未发布的版本
    • Mixed:混合的

     

     3、创建一个proxy类型的maven仓库

    proxy的功能就是代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
    这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带   

    可以设置多个 proxy 在 group 进行聚合

    Name: proxy-maven

    Maven 2: 不设置,使用默认。

    Remote Storage: 远程仓库地址,这里填写: https://repo1.maven.org/maven2/    ,还可以配置阿里的:   https://maven.aliyun.com/repository/public/

     

     4、创建一个group类型的maven仓库

    group类型的maven仓库,是一个聚合类型的仓库。它可以将前面我们创建的2个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。后面通过一些配置,大家可能会对这个group有更加深入的了解。

    Name:group-maven

    Storage:选择专用的blob存储maven-use。

    group : 将左边可选的2个仓库,添加到右边的members下。

     这样配置以后,我们就可以使用了。

    5、配置maven使用nexus私有仓库

    将项目编译依赖地址指向改成私服的配置,需要通过更改maven的配置实现,也就是更改maven/conf/settings.xml的仓库地址。

    在servers段添加:
      <servers>
        <server>
          <id>nexus-releases</id>
          <username>admin</username>
          <password>123456</password>
        </server>
     </servers>
    
    在 mirrors 段添加:
    <mirrors>
        <mirror>        
          <id>nexus-releases</id>        
          <name>nexus-maven-public</name>        
          <url>http://192.168.75.11:8081/repository/group-maven/</url>        
          <mirrorOf>*</mirrorOf>        
        </mirror>
    </mirrors>

    拉取之后,进到项目里边,开始编译。

    请注意,这个时候,我们的group里边是空空如也的。

    找一个springboot项目,地址:https://start.spring.io/

    那么接下来开始编译:

    unzip demo.zip
    cd demo
    mvn install -e

     接下来就会进入各种依赖下载的界面

    这个时候我们可以明白,其实我新搭建的仓库里边是空的,那么这会儿的流程就是经由group,转向我们配置的proxy,私服在通过proxy拉取远程的jar,然后再经由group,反馈给当前的项目。

    去私服里看看:

    可以看到刚刚编译过程中所下载的jar,都如我们所想的呈现在了group当中,明明是通过proxy下载的远程jar,为何可以在group里边看到呢,我想,这就是我刚刚说的,group的妙处所在吧。

    maven私服的基本框架已经搭成,当某一些jar无法下载的时候,一般情况下的解决办法都是通过手动下载,然后再手动上传到私服当中。

    三、nexus作为制品库 

    1、使用maven deploy 插件进行上传

    我们需要在nexus中创建一个新的仓库maven-hostd,同时我们需要在maven的配置文件settings.xml中配置maven-hostd认证。如下

    <servers>
       <server>
          <id>oms-artifactory</id>
          <username>admin</username>
          <password>123456</password>
        </server>
     </servers>

    注意使用 mvn deploy 发布时,server.id == respository.id 

    mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=ruoyi-admin/target/ruoyi-admin.jar -DgroupId=com.ruoyi -DartifactId=ruoyi-admin -Dversion=4.0.0 -Dpackaging=jar -DrepositoryId=oms-artifactory -Durl=http://192.168.130.133:8081/repository/oms-artifactory/

     集成jenkins pipeline

    步骤:获取Jar包名称、读取pom文件、获取坐标信息、使用mvn deploy上传。

    def jarName = sh returnStdout: true, script: "cd target;ls *.jar"
    jarName = jarName - "
    "
     
    def pom = readMavenPom file: 'pom.xml'
    pomVersion = "${pom.version}"
    pomArtifact = "${pom.artifactId}"
    pomPackaging = "${pom.packaging}"
    pomGroupId = "${pom.groupId}"
     
    println("${pomGroupId}-${pomArtifact}-${pomVersion}-${pomPackaging}")
     
    def mvnHome = tool "M2"
    sh  """
        cd target/
        ${mvnHome}/bin/mvn deploy:deploy-file -Dmaven.test.skip=true  
                                -Dfile=${jarName} -DgroupId=${pomGroupId} 
                                -DartifactId=${pomArtifact} -Dversion=${pomVersion}  
                                -Dpackaging=${pomPackaging} -DrepositoryId=maven-hostd 
                                -Durl=http://192.168.1.200:30083/repository/maven-hostd

    3、使用nexus插件上传制品

    安装 nexus artifact uploader 插件

    插件官网地址:   https://plugins.jenkins.io/nexus-artifact-uploader/

    插件下载地址:  http://updates.jenkins-ci.org/latest/nexus-artifact-uploader.hpi

     

     集成到 Jenkinsfile 

    //use nexus plugin
    def repoName = "maven-hostd"
    def filePath = "target/${jarName}"
    nexusArtifactUploader artifacts: [[artifactId: "${pomArtifact}",
                                        classifier: '',
                                        file: "${filePath}",
                                        type: "${pomPackaging}"]],
                            credentialsId: 'nexus-admin-user',
                            groupId: "${pomGroupId}",
                            nexusUrl: '192.168.1.200:30083',
                            nexusVersion: 'nexus3',
                            protocol: 'http',
                            repository: "${repoName}",

    查看上传的制品

    四、发布制品

    安装Maven Artifact ChoiceListProvider (Nexus)插件,需要提前安装  extensible-choice-parameter 插件。

     

  • 相关阅读:
    PHP+ajaxfileupload与jcrop插件结合 完成头像上传
    MySQL字符集设置及字符转换(latin1转utf8)
    sysbench的安装和做性能测试
    MySQL字符集的一个坑
    MySQL执行计划解读
    启动InnoDB引擎的方法
    查询当前使用的默认的存储引擎
    Mysql技术内幕——InnoDB存储引擎
    Oracle Golden Gate原理简介
    在系统启动时,Windows Vista 中、 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未关闭 TIME_WAIT 状态的所有 TCP/IP 端口
  • 原文地址:https://www.cnblogs.com/deny/p/14373030.html
Copyright © 2011-2022 走看看