zoukankan      html  css  js  c++  java
  • maven总结4

     仓库、nexus

    构件:在maven中,任何一个依赖(jar包)、插件(maven-compiler-plugin-2.5.1.jar)或者项目输出(前面例子中运行mvn clean install部署到本地仓库的jar包)都称为构件。

    仓库:maven在某一位置存储所有共享的构件,这个统一的位置就是仓库。

    仓库分类:maven仓库分为本地仓库和远程仓库

    本地仓库:在本地机器上缓存构件的文件目录(如前面例子中的D:dev_envmaven)

                     安装好maven后,本地仓库目录是不存在的。当用户输入第一条maven命令,maven才会创建本地仓库

    远程仓库:包括中央仓库、私服和其他公共库

    私服:是一种特殊的远程仓库,代理缓存远程仓库(可以是默认的中央仓库、可以是第三方的公用仓库)的构件。本地maven用户需要下载构件时,从私服请求。若私服中找不到构件,就从远程仓库(中央仓库或其他公共库)下载,缓存在私服上,供用户下次请求。 若一些无法从外部远程仓库下载的构件,可以从本地上传到私服上供maven用户请求。

    nexus私服的搭建和应用

    nexus搭建:

    1、下载地址:http://www.sonatype.org/nexus/archived(win:zip包   linux :tar.gz)

    2、将下载后的zip包解压缩,然后配置环境变量,在path变量后添加nexus的bin路径(本地环境路径为:D: exus-2.7.0-bundle exus-2.7.0-04in)

    3、在控制台(cmd)下运行nexus install命令将nexus安装到windows的服务中(可到系统的服务中查看) 4、在控制台(cmd)下运行nexus start命令

    5、在浏览器中输入http://ip:8081/nexus即可访问搭建的nexus私服(URL中的ip为本机ip)

          nexus的默认端口是可以手动更改的(修改D: exus-2.7.0-bundle exus-2.7.0-04conf exus.properties文件中的application-port属性值,重启nexus)

    6、点击页面右上角的log in,输入用户名(默认admin)和密码(默认admin123)

    nexus仓库

    点击页面左边的Repositories可以在界面上显示nexus下所有的仓库

    如下图,根据type字段可以将仓库分为:hosted、proxy、group、virtual

    1、hosted的仓库:内部项目的发布仓库(如前面例子中执行mvn clean install命令发布项目,最终发布的jar包回放入hosted仓库)

          3rd party仓库存储用户手动上传的构件,这些构件不能从中央仓库下载,在仓库的Artifact Upload页签中可以执行

    2、proxy的仓库:从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径)

    3、group仓库:组仓库用来方便开发人员进行设置的仓库

          group仓库可以自由组合其他的仓库为一个组,然后在项目的pom文件的repository可以配置这个仓库

    nexus仓库设置

    1、更新私有仓库索引

    点击Repository名称为Central,type为proxy的仓库,在页面下方的Configuration页,把 Download Remote Indexes的值改为True,然后点击最下面的save按钮。(更新索引的时间有点长,请耐心等待。更新完索引后可在Browse Index页签点击刷新按钮就可显示所有更新后的索引,展开索引树,点击到叶子节点--依赖jar包,可查看其依赖配置坐标。)

    可以在页面左上角的Artifact Search搜索框中输入要搜索的依赖(如:spring),就会显示搜索到的依赖配置坐标。

    由于自动更新索引时间较长,也可以手动下载包含索引文件的压缩包nexus-maven-repository-index.zip,然后放入Central仓库索引存储的目录(本地路径为D: exus-2.7.0-bundlesonatype-work exusindexercentral-ctx  ,这种方式未经验证,压缩包下载失败,第一种自动更新可以成功)。

    2、配置镜像

    修改本地仓库的配置文件D:dev_envmavensettings.xml,在mirrors节点下添加如下配置

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <mirror>  

    2.       <id>central</id>  

    3.       <mirrorOf>*</mirrorOf>  

    4.       <name>Human Readable Name for this Mirror.</name>  

    5.       <url>http://192.168.19.38:8081/nexus/content/groups/public/</url>  

    6.     </mirror>  

    <mirror> <id>central</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://192.168.19.38:8081/nexus/content/groups/public/</url>; </mirror>

    mirrorOf配置为*,表示这个镜像配置适用于所有的仓库,是所有仓库的一个镜像,maven无论要去那个仓库下载构建都会跳转到镜像URL(此时配置的是nexus的group类型的仓库地址,该组仓库包含了其他几个类型的仓库,可以点击这个仓库,查看其Configuration页签)去下载。

    mirrorOf也可以配置一个或多个仓库,多个仓库配置值要与对应的仓库id一致,以逗号分隔。

    项目的发布:

    1、配置发布仓库路径

    在user-parent的pom文件的project节点下添加项目发布仓库信息。snapshotRepository配置快照版本发布仓库路径(由于使用的例子定义的都是快照版本,所以项目都会发布到user-snapshots这个仓库中,对应的是nexus上与配置URL匹配的仓库);repository配置release版本发布仓库路径。url属性定义最终发布到的nexus仓库路径。

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <distributionManagement>  

    2.     

    3.     <snapshotRepository>  

    4.         <id>user-snapshots</id>  

    5.         <name>User Project SNAPSHOTS</name>  

    6.         <url>http://192.168.19.38:8081/nexus/content/repositories/snapshots/</url>  

    7.     </snapshotRepository>  

    8.       

    9.     <repository>  

    10.         <id>user-releases</id>  

    11.         <name>User Project Release</name>  

    12.         <url>http://192.168.19.38:8081/nexus/content/repositories/releases/</url>  

    13.     </repository>  

    14.       

    15.   </distributionManagement>  

    <distributionManagement> <snapshotRepository> <id>user-snapshots</id> <name>User Project SNAPSHOTS</name> <url>http://192.168.19.38:8081/nexus/content/repositories/snapshots/</url>; </snapshotRepository> <repository> <id>user-releases</id> <name>User Project Release</name> <url>http://192.168.19.38:8081/nexus/content/repositories/releases/</url>; </repository> </distributionManagement>

     

    2、授权

    项目发布的时候需要配置一个有发布权限的用户(nexus有个默认的用户deployment,默认密码deployment123),nexus仓库会鉴权,修改本地仓库的配置文件D:dev_envmavensettings.xml,在servers节点下添加如下配置

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <server>  

    2.       <id>user-snapshots</id>  

    3.       <username>deployment</username>  

    4.       <password>deployment123</password>  

    5.     </server>  

    6.   

    7.     <server>  

    8.       <id>user-releases</id>  

    9.       <username>deployment</username>  

    10.       <password>deployment123</password>  

    11.     </server>  

    <server> <id>user-snapshots</id> <username>deployment</username> <password>deployment123</password> </server> <server> <id>user-releases</id> <username>deployment</username> <password>deployment123</password> </server>

    3、发布

    在springsource中导入user-parent及其子项目,运行user-parent下的pom文件 clean deploy 

    发布成功后可以到<url>http://192.168.19.38:8081/nexus/content/repositories/snapshots/</url>;对应的nexus仓库的Browse Storage页签下查看,会显示所有项目的jar包

  • 相关阅读:
    Codeforces Round #647 (Div. 2)
    Codeforces Round #647 (Div. 2)
    Codeforces Round #647 (Div. 2)
    “科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛(ABDF)
    POJ3764 The xor-longest Path(异或/01Trie)
    06.Python网络爬虫之requests模块(2)
    05.Python网络爬虫之三种数据解析方式
    04.Python网络爬虫之requests模块(1)
    03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》
    02.Python网络爬虫第二弹《http和https协议》
  • 原文地址:https://www.cnblogs.com/justuntil/p/4752949.html
Copyright © 2011-2022 走看看