- 浏览: 796721 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (651)
- Java (39)
- Java 初学者小问题 (66)
- 设计模式 (7)
- 项目管理 (3)
- 数据库 (1)
- 算法 (2)
- Java practices (6)
- Effective Java2读书笔记 (78)
- Linux (2)
- programming ruby 读书笔记 (5)
- Core Java Ninth Edition Volume I 读书笔记 (15)
- Pro Git 读书笔记 (12)
- Git (3)
- Maven in Action 读书笔记 (20)
- Web (12)
- 非技术类书籍 (11)
- 电影 (40)
- Web Cache (1)
- jquery (0)
- 历史 (4)
- Dive Into HTML5 读书笔记 (13)
- 三国演义小学毕业考 (79)
- 高效能人士的7个习惯 读书笔记 (12)
- Java Performance 读书笔记 (3)
- Protocol Buffer 学习笔记 (6)
- Mongo DB 学习笔记 (7)
- Morphia 学习笔记 (7)
- Algorithms -- Princeton 学习笔记 (13)
- String研究 (10)
- Hadoop: The Definitive Guide 读书笔记 (3)
- Java与模式读书笔记 (5)
- Date研究 (3)
- The Roman Empire 听课笔记 (4)
- Algorithms -- Standford 学习笔记 (16)
- Core Java Ninth Edition Volume II 读书笔记 (9)
- Thinking in Java 4th Edition 读书笔记 (21)
- Node : Up and Running 学习笔记 (5)
- Eloquent Javascript (8)
- Smashing Node.js 读书笔记 (1)
- Algorithms II -- Standford 学习笔记 (19)
- Algorithm II -- Princeton 学习笔记 (14)
- 网络安全 (2)
- Javascript (4)
- 正则表达式 (1)
- JAVA 7/8 (15)
- JVM (10)
- NodeJS (1)
- 鸟哥的linux私房菜读书笔记 (14)
- Web Service (1)
- The art of programming (9)
- Introduction to Algorithm 读书笔记 (4)
- Java 源码阅读 (0)
- Spring in Action 读书笔记 (2)
- Java Network Programming 读书笔记 (2)
最新评论
-
心存高远:
谢谢作者分享,刚好看到这里不太明白,现在茅塞顿开。不过runt ...
关于 Maven的传递依赖的理解 -
sxlkk:
851228082 写道甚至在某次技术会议现场遇到《Maven ...
关于 Maven的传递依赖的理解 -
851228082:
851228082 写道a----compile----b-- ...
第五章 坐标和依赖 -
851228082:
a----compile----b-----provided- ...
第五章 坐标和依赖 -
851228082:
甚至在某次技术会议现场遇到《Maven in action》的 ...
关于 Maven的传递依赖的理解
1. Nexus 分为开源版和企业版,开源版基于 GPLv3 许可证。开源版本主要特性有:
1) 较小的内存占用(最少为 28MB )
2) 基于 ExJS 的友好界面
3) 基于 Restlet 的完全 REST API
4) 支持代理仓库、宿主仓库和仓库组
5) 基于文件系统,不需要数据库
6) 支持仓库索引和搜索
7) 支持从界面上传 Maven 构件
8) 细粒度的安全控制。
2. Nexus 的下载地址是: http://nexus.sonatype.org/downloads/ 。有两种安装包:一种是自带 jetty 容器的 Bundle 包,另一种是不带 web 容器的 war 包。
3. Bundle 包安装目录下会有两个目录: nexus-webapp-x.x.x 包含了 Nexus 运行所需的文件。 sonatype-work 下包含 Nexus 生成的配置文件、日志文件、仓库文件等。 Nexus 默认访问地址是: http://localhost:8081/nexus 。
如需要改变端口,可以修改 nexus-webapp-x.x.x/conf/plexus.properties 文件中的 application-port 属性即可。
4. Nexus 的仓库类型有四种: group (仓库组)、 hosted (宿主)、 proxy (代理)和 virtual (虚拟)。仓库组没有具体的内容,它会转向其包含的宿主仓库或代理仓库获得实际构件的内容。宿主仓库主要是用来存放一些组织内部的构件,或由于版权原因不能放在公共 Maven 仓库中的构件的。代理仓库则是用来代理远程仓库,它会从远程仓库下载并缓存构件。虚拟仓库用于 maven1 格式的仓库,会动态地将仓库内容格式进行转换。
5. Nexus 内置了如下仓库:
1) Maven Central :代理 Maven 的中央仓库,策略为 release
2) Releases :策略为 Release 的宿主类仓库,用来部署组织内部的 release 版本构件
3) Snapshots :策略为 Snapshot 的宿主类仓库,用来部署组织内部的 release 版本构件
4) 3rd party :策略为 Release 的宿主类仓库,用来部署无法从公共仓库获得的第三方 release 版构件。
5) Apache Snapshots :代理 Apache Maven 仓库,策略为 Snapshot
6) Codehaus Snapshots :代理 Codehaus Maven 仓库,策略为 Snapshot
7) Google Code :代理 Google Code Maven 仓库,策略为 Release
8) Java.net – Maven 2 :代理 Java.net Maven 仓库,策略为 Release
9) Public Repositories :将上述策略为 Release 的仓库聚合并通过一致的地址提供服务。
10) Public Snapshot Repositories :将上述策略为 Snapshot 的仓库聚合并通过一致的地址提供服务。
6. 创建 Nexus 宿主仓库时,仓库会默认地存放在 sonatype-work/nexus/storage/repository-id/ 下,也可以填写 Override Local Storage Location 自定义仓库的存储路径。同时可以设置以下选项:
Deployment Policy :只读(禁止部署)、关闭重新部署(同一构件只能部署一次)或允许重新部署。
Allow File Browser :设置是否允许在 Repository 的 Browse Storage 选项卡中浏览仓库。
Include in Search :设置是否对该仓库进行索引并提供搜索。
Publish URL :设置是否通过 URL 提供服务,如为 false ,访问该仓库的地址时会得到 404
Not Found Cache TTL :缓存未找到文件信息的时间(此时间内不再去找,直接返回没找到)
7. 创建 Nexus 代理仓库时,除了设置远程仓库的地址和认证信息外,还可以设置以下选项:
Download Remote Indexes :设置是否下载远程仓库的索引。(下载远程仓库的索引后,即使没有缓存远程仓库的构件,用户依然能搜索或浏览构件的基本信息)
Checksum Policy :设置校验和出错时,是忽略、记录警告信息还是拒绝下载。
Artifact Max Age :设置多久更新一次 Artifact (对于策略为 release 的仓库,可以设置为 -1 ,也就是不更新)
Metadata Max Age :设置多久更新一次 metadata 。
8. 仓库组没有 Release 和 Snapshot 的区别,创建时会让用户选择由哪些宿主仓库或代理仓库构成。仓库组所包含的仓库的顺序决定了仓库组遍历它们的次序,所以最好将常用的仓库放在前面。
9. Nexus 通过维护仓库的索引来提供搜索功能。为了能搜索 Maven 中央仓库,需要设置 Nexus 中的 Maven Central 代理仓库下载远程索引,默认这个设置是关闭的。只要远程仓库提供 nexus-indexer 形式的索引, Nexus 就可以下载它的索引,同时 Nexus 也可以对宿主仓库和代理仓库进行索引。仓库有了索引之后,可以在其 Browse Index 选项卡中浏览仓库内容的树形结构。
10. Nexus 提供了关键字搜索、 GAV 搜索、类名搜索和校验和搜索。
11. 我们可以在 settings.xml 中配置 Maven 私服,这样就可以对本机的所有 Maven 项目有效。但是 settings.xml 中没有 Repositories 和 pluginRepositories 。但可以设置如下信息:
<profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus</name> <url>http://localhost:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus</name> <url>http://localhost:8081/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiels>
同时我们可以 settings.xml 中将 Maven 私服设为所有远程仓库的镜像,这样就能让所有 Maven 下载请求都仅仅通过 Nexus :
<mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror> </mirrors>
12. 可 以在 settings.xml 中的 profile 元素中添加以下元素:
<repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories>
仓库及插件仓库的 id 为 central ,覆盖了超级 POM 中央仓库的配置它们的 url 已无关紧要,因为所有请求都会通过镜像访问私服地址。这样配置的主要目的是开放对 snapshot 版本下载的支持。
其实只要项目配置中有一个依赖仓库开放了 snapshot 策略就行。而且如果私服仓库组中的仓库不支持 snapshot 也没用。
13. 可以在 POM 中设置构件发布到哪个远程仓库,将这个仓库设置成 Nexus 私服:
<distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Releases Repository</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshots Repository</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
同时在 settings 中的配置 Nexus 的认证信息:
<servers> <server> <id>nexus-releases</id> <username>admin</username> <password>password</username> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>password</username> </server> </servers>
同时, Nexus 也支持在 repository 的 Artifact Upload 选项卡中手动上传构件。
14. 一个 Nexus 用户可以被赋予一个或多个角色,一个角色可以包含一个或多个权限,也可以包含一个或多个其他角色。
15. N exus 预定义了三个用户:
1) admin :对 Nexus 服务的完全控制权限,默认密码为 admin123
2) deployment :能够访问 Nexus ,浏览仓库内容,搜索并且上传部署构件但无法配置 Nexus ,默认密码为: deployment123
3) anonymous :对应所有未登录用户,可以浏览和搜索仓库
16. 我们可以为不同的实际项目配置不同的宿主仓库,并为这些宿主仓库建立他们对应的增、删、改、查的权限(通过导航栏中 Privileges 链接),并将这些权限赋予不同的角色(通过导航栏中 Roles 链接)
17. Nexus 提供了如下一系列可调度任务( Scheduled Tasks )来方便用户管理系统。用户可以设定这些任务的运行频率。
1) Download Indexes :为代理仓库下载远程索引
2) Empty Trash :清空 Nexus 的回收站
3) Evict Unused Proxied Items From Repository Caches :删除代理仓库中长期未被使用的构件缓存。
4) Expire Repository Caches :清空代理仓库的缓存,重新去获取远程仓库的信息。
5) Publish Indexes :将仓库索引发布成可供 m2eclipse 和其他 Nexus 使用的格式。
6) Purge Nexus TimeLine :删除 Nexus 时间线文件,该文件用于建立系统的 RSS 源。
7) Rebuild Maven Metadata Files :基于仓库内容重新创建 metadata 。
8) ReIndex Repositories :为仓库重新编纂索引。
用户可以通过导航栏中 Scheduled Tasks 链接创建可调度任务。
18. 其他私服软件还有: Archiva ,它是 Apache 的顶级项目,地址为 http://achiva.apache.org 。
JFrog 的 Artifactory ,它将构件存储在数据库中,地址为 http://www.jfrog.org/products.php 。
发表评论
-
关于 Maven的传递依赖的理解
2012-09-30 09:50 13984今天又回顾了一下 《Maven in Action》的读书笔记 ... -
《Maven in Action》读后感
2012-02-23 23:48 2210今天终于读完了《Maven in Action》一书,真所谓书 ... -
第十八章 Archetype
2012-02-23 23:30 50831. Archetype 是 Maven ... -
第十七章 编写Maven插件
2012-02-23 19:42 44921. 编写 Maven 插件的主要步骤 ... -
第十六章 m2eclipse
2012-02-23 15:44 23771. m2eclipse ( http: ... -
第十五章 生成项目站点
2012-02-21 09:27 22881. Maven 社区提供了大量插件,能让用户 ... -
第十四章 灵活的构建
2012-02-20 16:21 18701. 通过 <propertie ... -
第十三章 版本管理
2012-02-20 15:57 21201. 版本管理( Version Manage ... -
第十二章 使用Maven构建Web应用
2012-02-15 18:38 60411. Web 项目的 POM ... -
第十一章 使用Hudson进行持续集成
2012-02-09 17:09 23171. 持续集成就是快速 且高频率 ... -
第十章 使用Maven进行测试
2012-02-05 22:17 214111. com.google.code. ... -
第八章 聚合与继承
2011-12-06 09:55 20491. 为了能用一条命令来构建一个实际 ... -
第七章 生命周期和插件
2011-12-05 13:36 23081. Maven 的生命周期就是为了对所有的构 ... -
第六章 仓库
2011-12-03 18:44 24081. Maven 在一个工作站上的某个位置统一 ... -
第五章 坐标和依赖
2011-12-03 15:14 20851. Maven 定义了这样一组规则:世界上任 ... -
第四章 背景案例
2011-12-02 21:20 14231. 主要场景: 1) 用户访问注册页面 2) ... -
第三章 Maven 使用入门
2011-12-01 18:40 25501. 就像Make的Makefile, Ant的build. ... -
第二章 Maven的安装和配置
2011-12-01 10:01 62411. 设置JAVA_HOME, Path中加入%JAVA_H ... -
第一章 Maven 简介
2011-12-01 09:48 22901. Maven 是优秀的构建工 ...
相关推荐
背景案例第5章 坐标和依赖第6章 仓库第7章 生命周期和插件第8章 聚合与继承第9章 使用nexus创建私服第10章 使用maven进行测试第11章 使用hudson进行持续集成第12章 使用maven构建web应用第13章 版本管理第...
第9章:使用Nexus创建私服/9.6 部署构件到Nexus/9.6.1 使用Maven部署构件到Nexus 第9章:使用Nexus创建私服/9.7 Nexus的权限管理/9.7.1 Nexus的访问控制模型 第9章:使用Nexus创建私服/9.7 Nexus的权限管理/9.7.2 为...
##### 第九步:配置Maven从私服下载依赖 为了确保所有的构建都从私服中下载依赖,需要在 `~/.m2/settings.xml` 文件中进行相应的配置。具体配置如下: ```xml <id>nexus * <url>...
### 使用Nexus作为Maven私有仓库全攻略 #### Nexus简介 Nexus是由Sonatype公司推出的一款强大的Maven仓库管理工具。相比于之前介绍过的Artifactory,Nexus具有更为直观的用户界面和丰富的功能特性,是一款开箱即用...
标签中的"nexus-3.6.0-02-u"可能是对Nexus版本的简写,"nexus"是产品名,"私服"指的是Nexus作为一个内部使用的仓库,可以作为公司的Maven私服,帮助团队管理私有库和第三方依赖。"maven"则强调了Nexus对Maven的强大...
本文旨在帮助您了解如何安装和配置Nexus 2.x版本,并通过实例演示如何搭建一个高效的私服仓库。 #### 适用范围与预期读者 本指南适用于所有使用Java技术栈进行软件开发的企业或团队。特别是对于那些希望提高构建...
2. **本地存储库**:用户可以创建自己的本地存储库,用于存放自定义构建的构件或第三方库,确保团队内部的一致性。 3. **虚拟存储库**:Nexus支持虚拟存储库,它可以聚合多个存储库(包括本地和远程)为开发者提供...
对于私有仓库,一般会创建一个宿主仓库用于存放公司内部组件,同时可能配置一个或多个代理仓库,指向Maven Central或其他常用第三方仓库。 5. **上传本地Maven仓库到Nexus**: 使用`mvn deploy`命令,配合pom.xml...
然而,由于默认的Maven中央仓库可能无法满足企业内部私有库的需求,比如公司内部的私有组件、SNAPSHOT版本或者特定的第三方依赖,这时就需要使用到Maven私服,而Nexus正好可以作为这样的代理服务器。 Nexus提供了...
在Maven私服中,你需要创建不同类型的仓库,如 Releases(发布版本)、Snapshots(快照版本)和Third-party(第三方库)。这些仓库有不同的用途,例如Releases用于存储稳定的发布版本,Snapshots用于存储开发中的不...
2. **统一管理依赖**:私服可以集中管理企业内部使用的依赖库,方便维护和升级。 3. **降低网络负担**:通过私服缓存外部依赖,可以显著降低对外部网络的依赖,减轻网络带宽压力。 4. **支持内部依赖**:对于内部...
8. **备份与恢复**:定期备份Nexus的数据非常重要,可以使用`bin/nexus backup`命令创建备份,恢复则使用`bin/nexus restore`命令。 9. **监控与日志**:Nexus的日志位于`logs`目录,可以通过日志分析系统或直接...
Nexus Repository 是 Sonatype 公司提供的一款强大的 Maven 私服软件,它能够帮助开发者管理、存储和分发各种软件组件,如 JAR 文件、NPM 包、Python 软件包等。这款工具在企业级开发环境中广泛使用,因为它可以提高...
课程介绍 ...第9课 使用Maven管理新闻系统开发-项目简介 第10课 使用Maven管理新闻系统开发-项目搭建(一) 第11课 使用Maven管理新闻系统开发-项目搭建(二) 第12课 使用Maven管理新闻系统开发-项目完善
九、上传jar文件到Nexus仓库 1. Group ID:组织ID,一般格式:域名.组织名(或项目名) 2. Artifact ID:包名 3. Version:版本 十、Maven项目使用远程仓库 1. 配置Maven本地Maven配置文件apache-maven-3.6.1\...
在`settings.xml`文件中添加私服的配置信息,以便Maven能够在构建过程中使用私服。 ##### 6.5 项目发布到私服中 使用`mvn deploy`命令将项目发布到私服中。 ##### 6.6 如何将中央仓库中找不到的jar上传到私服中 ...