仓库、nexus

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

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

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

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

安装好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:\nexus-2.7.0-bundle\nexus-2.7.0-04\bin)

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

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

nexus的默认端口是可以手动更改的(修改D:\nexus-2.7.0-bundle\nexus-2.7.0-04\conf\nexus.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:\nexus-2.7.0-bundle\sonatype-work\nexus\indexer\central-ctx  ,这种方式未经验证,压缩包下载失败,第一种自动更新可以成功)。

2、配置镜像

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

[html] view plaincopyprint?

  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?

  1. <distributionManagement>

  2. <snapshotRepository>

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

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

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

  6. </snapshotRepository>

  7. <repository>

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

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

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

  11. </repository>

  12. </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_env\maven\settings.xml,在servers节点下添加如下配置

[html] view plaincopyprint?

  1. <server>

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

  3. <username>deployment</username>

  4. <password>deployment123</password>

  5. </server>

  6. <server>

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

  8. <username>deployment</username>

  9. <password>deployment123</password>

  10. </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包

maven总结4的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. CSS3中的box-shadow

    语法: box-shadow: h-shadow v-shadow blur spread color inset; box-shadow 向框添加一个或多个阴影.该属性是由逗号分隔的阴影列表,每个阴 ...

  2. Stanford机器学习课程(Andrew Ng)

    斯坦福大学机器学习视频教程(附学习笔记,potplay播放器,PPT等资料),很具有学习价值. 链接:http://mooc.guokr.com/note/16274/

  3. 解析plist文件(字典里包着数组,数组中又包含字典)

    #import "RootTableViewController.h" #import "City.h" @interface RootTableViewCon ...

  4. 解压缩框架--SSZipArchive

    下载地址:https://github.com/ZipArchive/ZipArchive 如果你直接将框架文件夹拖入项目,构建时会出现以下错误 解决方案: 点击+以后会弹出 如果使用cocoaPod ...

  5. 关于UI资源获取资源的好的网站

    前言:和我一样喜欢UI的一定喜欢这里的内容. 下面是关于sketch资源获取网页,点击图片就能进入: 连接是:https://github.com/JakeLin 居然意外百度到Sketch中国,还提 ...

  6. XCode升级到7后,规范注释生成器VVDocumenter插件没有用了,怎么办?

    Xcode更新到7之后,发现很多插件包括规范注释生成器VVDocumenter的插件都没法用了,找遍百度都没有找到成功解决这个问题的方法,然后我突发奇想,把注释也弄进代码模板里.虽然没有插件那样灵活: ...

  7. IOS酷炫的下拉刷新链接收集

    https://github.com/MartinRGB/Replace-iOS https://github.com/coolbeet/CBStoreHouseRefreshControl http ...

  8. layout_weight的使用说明

    近期学习了Mars老师的视频,看了十二课的有关layout_weight的讲解,就做了些总结. layout_weight用于分配剩余的布局空间. 首先,先看段代码,它定义了两个textview控件 ...

  9. C#拖放实现餐饮系统转台操作

    转台是餐饮系统中常用的操作,一般系统都是右键选择弹出目标台界面,然后选择目标台确定,现在我们把需要转的台通过拖动到目标台图标上面就可以实现前面的操作,简单快捷. 转台操作时: 转台成功后: /// & ...

  10. HDU 4044 GeoDefense(动态规划)

    GeoDefense Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...