24-Nexus3.X配置
Maven介绍
Apache Maven是一个创新的软件项目管理和综合工具。
Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件。
Maven最强大的功能就是能够自动下载项目依赖库。
Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。
Maven主要目标是提供给开发人员:
1)项目是可重复使用,易维护,更容易理解的一个综合模型。
2)插件或交互的工具,这种声明性的模式。
私服介绍
私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
Nexus介绍
Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
如果使用了公共的Maven仓库服务器,可以从Maven*仓库下载所需要的构件(Artifact),但这通常不是一个好的做法。
正常做法是在本地架设一个Maven仓库服务器,即利用Nexus私服可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。
Nexus在代理远程仓库的同时维护本地仓库,以降低*仓库的负荷,节省外网带宽和时间,Nexus私服就可以满足这样的需要。
Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。
Nexus支持WebDAV与LDAP安全身份认证。
Nexus还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。
为什么要构建Nexus私服?
如果没有Nexus私服,我们所需的所有构件都需要通过maven的*仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
总之,在本地构建nexus私服的好处有:
1)加速构建;
2)节省带宽;
3)节省*maven仓库的带宽;
4)稳定(应付一旦*服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
这些优点使得Nexus日趋成为最流行的Maven仓库管理器。
1.官网下载tar包
2.解压
3.进入bin目录
4.执行 ./nexus run
5.访问http://部署nexus地址:8081
出现上述页面,说明配置nexus成功!
点击右上角“Log in”,
输入默认用户名(admin)和默认密码(admin123)登录
可以在“管理”里查看nexus的系统信息
Nexus仓库分类的概念:
1)Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件
2)为了方便,Maven可以从仓库组下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容).
Nexus的web界面功能介绍
1.Browse Server Content
1.1 Search
这个就是类似Maven仓库上的搜索功能,就是从私服上查找是否有哪些包。
注意:
1)在Search这级是支持模糊搜索的,如图所示:
1.2 Browse
1)Assets
这是能看到所有的资源,包含Jar,已经对Jar的一些描述信息。
2)Components
这里只能看到Jar包。
2.Server Adminstration And configuration
看到这个选项的前提是要进行登录的,如上面已经介绍登陆方法,右上角点击“Sign In”的登录按钮,输入admin/admin123,登录成功之后,即可看到此功能,如图所示:
2.1 Blob Stores
文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示:
2.2 Repositories
1)代理*Maven仓库 Proxy
这里就是代理的意思,代理*Maven仓库,当PC访问*库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
这样的优势只要其中一个人从*库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。
创建Proxy的具体步骤
1--点击“Create Repositories”按钮
2--选择要创建的类型
3--填写详细信息
Name:就是为代理起个名字
Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/
Blob Store: 选择代理下载包的存放路径
2)宿主机 Hosted
Hosted是宿主机的意思,就是怎么把第三方的Jar放到私服上。
Hosted有三种方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的版本
Mixed:混合的
Hosted的创建和Proxy是一致的,具体步骤和上面基本一致。如下:
注意事项:
Allow Redeploy:允许重新部署
Disable Redeploy:禁止重新部署
Read-Only:只读
3.仓库组(Repository Group)
通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包,如:
maven-public
nuget-group
4.日志及数据分析
=============================简介讲解=======================================
1. 代理仓库(Proxy Repository)
顾名思义是代理第三方仓库的,如:
maven-central
nuget.org-proxy
版本策略(Version Policy):
Release: 正式版本
Snapshot: 快照版本
Mixed: 混合模式
布局策略(Layout Policy):
Strict:严格
Permissive:宽松
2. 宿主仓库(Hosted Repository)
存储本地上传的组件和资源的,如:
maven-releases
maven-snapshots
nuget-hosted
部署策略(Deployment Policy):
Allow Redeploy:允许重新部署
Disable Redeploy:禁止重新部署
Read-Only:只读
3. 仓库组(Repository Group)
通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包,如:
maven-public
nuget-group
与Maven集成
1. Servers 配置认证信息
在Maven settings.xml中添加Nexus认证信息:
<server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server>
nexus-releases: 用于发布Release版本
nexus-snapshots: 用于发布Snapshot版本
Release版本与Snapshot版本的区分:
Release: 4.3.0
Snapshot: 4.3.0-SNAPSHOT
在项目POM.xml中设置的版本号添加SNAPSHOT标识的都会发布为SNAPSHOT版本,没有SNAPSHOT标识的都会发布为Release版本。
SNAPSHOT版本会自动加一个时间作为标识,如:4.3.0-SNAPSHOT发布后为变成4.3.0-SNAPSHOT-20160712.114532-1.jar
2. 配置自动化部署构件
在POM.xml中添加以下代码:
<distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Release Repository</name> <url>http://127.0.0.1:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://127.0.0.1:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
注意事项:
ID名称必须要与settings.xml中Servers配置的ID名称保持一致。
项目版本号中有SNAPSHOT标识的,会发布到Nexus Snapshots Repository, 否则发布到Nexus Release Repository,并根据ID去匹配授权账号。
3. 部署到Nexus仓库
mvn deploy
4. 上传第三方JAR包
Nexus 3.0不支持页面上传,可使用maven命令:
# 如第三方JAR包:aliyun-sdk-oss-2.2.3.jar
mvn deploy:deploy-file -DgroupId=com.aliyun.oss -DartifactId=aliyun-sdk-oss -Dversion=2.2.3 -Dpackaging=jar -Dfile=D:\aliyun-sdk-oss-2.2.3.jar -Durl=http://127.0.0.1:8081/repository/maven-3rd/ -DrepositoryId=nexus-releases
注意事项:
1.建议在上传第三方JAR包时,创建单独的第三方JAR包管理仓库,便于管理有维护。(maven-3rd)
2.-DrepositoryId=nexus-releases 对应的是settings.xml中Servers配置的ID名称。(授权)
5. 使用代理*仓库
<repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus Plugin Repository</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories>
注意事项:
在开发中如果有严格的管理要求,可将SNAPSHOT和RELEASE单独配置。
有插件依赖时配置插件仓库,默认会使用Maven*仓库。
参考
https://segmentfault.com/a/1190000005966312#articleHeader12
http://www.cnblogs.com/kevingrace/p/6201984.html