maven总结4
构件:在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?
<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>
<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?
<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>
<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?
<server>
<id>user-snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>user-releases</id>
<username>deployment</username>
<password>deployment123</password>
</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的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- spring maven pom.xml设置
spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- maven依赖查询地址
http://search.maven.org/#search%7Cga%7C1%7C
- maven 中snapshot版本和release版本的区别
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
随机推荐
- Android笔记——Android中数据的存储方式(一)
Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...
- 关于一个js连续赋值问题之我见(词略穷,见谅)
前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样 var a = { n : 1 }; var b = a; a.x = a = {n : 2}; console.log(a.x ...
- touch触摸事件
事件对象 事件对象是用来记录一些事件发生时的相关信息的对象.事件对象只有事件发生时才会产生,并且只能是事件处理函数内部访问,在所有事件处理函数运行结束后,事件对象就被销毁! W3C DOM把事件对象作 ...
- 【读书笔记】iOS-NSData
Cocoa为我们提供了NSData类,该类包装了大量字节,你可以获得数据的长度和指向字节起始位置的指针,因为NSData是一个对象,适用于常规的内存管理行为.因此,如果将数据块传递给一个函数或方法,可 ...
- Struts2(十五)实现文件上传
一.导入包 需要将commons-fileupload和commons-io包和struts包一起导入 实现步骤: 在Jsp页面实现客户端选择上传文件 配置Struts.xml,拦截器会自动接收上传的 ...
- IOS NSOperation&NSOperationQueue
NSOperation与NSOperationQueue的基本理论如下: 1.NSOperationQueue代表一个FIFO的队列,它负责管理系统提交的多个NSOperation,NSOp ...
- 【转】self.myOutlet=nil、viewDidUnload、dealloc的本质剖析
对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的. 内存控制里面有很多门道,在这里分析一下 ...
- 如何创建可扩展表视图中的iOS 学习和拓展优化(有待更新)
首先介绍老外的文章:<How To Create an Expandable Table View in iOS>这是老外用Swift实现 的,对应的老外github项目源码:https: ...
- ubuntu14.04下nodejs + npm + bower的安装、调试和部署
1. 简介 本文介绍ubuntu14.04下nodejs+npm+bower的安装.调试和部署 参考文档 https://docs.npmjs.com/getting-started https: ...
- 大家一起和snailren学java-(五)访问控制权限
“感觉中间断了一天,可是数数好像又没断……(-_^)” 这一天我们来再次细致讨论一下java的访控机制.java的访控机制其实在编程架构上非常实用的,也就是所谓的隐藏具体实现或者封装. 首先看看使用场 ...