为什么要用远程仓库(私服)

如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,这样就加大了中央仓库的负载和浪费了外网的带宽,如果网速慢的话还会影响项目的进程。为团队创建私服,可以让公司的团队共享一套构件,加快了项目搭建的进程。所以我们选择用Nexus创建私服。

Nexus下载

下载地址:http://www.sonatype.org/nexus/go

Nexus安装

(1)解压

$ tar zxvf nexus-2.1.2-bundle.tar.gz

(2)移动到其他目录

$ mv nexus-2.1.2 /home/nexus

(3)进入nexus的bin目录下

$ cd /home/nexus/bin

(4)执行命令启动服务

$  ./nexusstart

(5)执行命令停止服务

$  ./nexusstop

Nexus浏览

启动服务之后,浏览器中输入:http://127.0.0.1:8081/nexus/,默认用户名和密码是admin和admin123.出现如图所示运行成功:

Nexus仓库类型介绍

nexus的仓库类型分为以下四种:

group:仓库组,用了合并多个hosted/proxy仓库,当你的项目希望多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

hosted:宿主,本地仓库,通常我们会部署自己的构建到这一类仓库。

proxy:代理仓库,通常被用来代理远程的公共仓库,如maven中央仓库。

virtual:虚拟

主要介绍一下三个本地仓库:

  • Releases:用来部署管理内部的发布版本构件的宿主类型仓库,这里存放我们自己项目中发布的构建,通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war,我们就可以把这个构建发布到Nexus的Releases本地仓库。
  • Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库,它的目的是让我们可以发布那些非release版本, 非稳定版本,比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发,那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本。
  • 3rd Party:无法从公共仓库获得的第三方发布版本的构件仓库,比如有些构件在中央仓库是不存在的.比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

下载索引

nexus索引好比目录,只要我们更新好索引,就可以在nexus系统中去查找,下载我们需要的jar包,并且对应的groupId,artifactId,version都可以方便的查到。如图:

刚刚搭建的nexus,索引会是空的,所以需要我们去下载索引。下载索引有两种方式。

第一种:在线下载索引。把Centra仓库,点击仓库下面的configuration下把DownloadRemote Indexes修改为true。如下图:

然后在Central仓库上右击,选择Pepari Index,这样Nexus就会去下载索引文件。

第二种:离线下载索引。

由于索引文件很大,在线下载会很漫长,所以采用离线下载会很快。从网上找到一个nexus索引仓库包下载下来,如图:

下载完成以后解压,把文件夹中的东西拷贝到sonatype-work/nexus/indexer/central-ctx下面:

重新启动一下nexus。

能够很快的把索引下载过来。如图:

如果中间添加了新的jar包想更新索引,点中右击update index就行了。如图:

项目中配置Nexus仓库(maven的setting.xml文件配置)

配置maven从nexus下载构件:

<profiles>
<profile>
<id>nexusProfile</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://nexus.m2plat.cn/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://nexus.m2plat.cn/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexusProfile</activeProfile>
</activeProfiles>

该配置中使用了一个id为nexusProfile的profile,这个profile包含了相关的仓库配置,同事配置中又使用了activeProfile元素将这个profile激活,这样当执行maven构件的时候,激活的profile会将仓库配置应用到项目中去。

配置镜像让maven只使用私服:

<!--maven对全部仓库的访问全部拦截到私服的public仓库中去,如果私服关闭,那么久不能访问中央工厂了-->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Local Repository</name>
<url>http://127.0.0.1:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>

配置后本机所有的Maven项目都会从nexus私服下载构件。

配置maven部署构件到nexus:

<!-- 项目部署到私服配置 -->
<distributionManagement> <!-- 远程部署管理信息 -->
<repository> <!--部署项目产生的构件到远程仓库需要的信息 -->
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
</repository> <snapshotRepository> <!-- 如果没有配置该元素,默认部署到repository元素配置的仓库 -->
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

nexus仓库对匿名用户是只读的,所以为了能够部署构件,还需要在setting.xml文件中配置认证信息:

<!--私服的验证信息-->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>

配置好以后,就可以通过maven的deploy命令,将项目的jar包部署到Nexus上,供其他项目组模块使用。大大加快了项目组的开发效率。

参考:

《maven实战》

【maven基础】maven私服搭建和使用

Maven学习笔记—私服(包含maven的setting.xml配置)的更多相关文章

  1. maven -- 学习笔记(二)之setting.xml配置说明(备忘)

    setting.xml配置说明,learn from:http://pengqb.javaeye.com,http://blog.csdn.net/mypop/article/details/6146 ...

  2. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  3. Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  4. Maven学习笔记(三) :Maven使用入门

    编写POM:      Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描写叙述项目怎样构建,声明项目依赖,等等.   ...

  5. Maven学习笔记-03-Eclipse和Maven集成

    本文使用 Eclipse 集成 Maven,并创一个基于 maven的web工程 一 环境版本信息 本文使用的版本信息如下: Eclipse Version: Mars.1 Release (4.5. ...

  6. Maven学习笔记(十二)-maven打包之resource配置

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011781521/article/details/79052725 一.简介 构建Maven项目的 ...

  7. Maven学习笔记(二) :Maven的安装与配置

    在Windows上安装Maven:    1.  首先检查安装JDK 通过命令行运行命令:echo %JAVA_HOME%和 java  -version,能够查看当前java的安装文件夹及java的 ...

  8. Maven学习笔记5:Maven属性、profile和资源过滤

    Maven的六类属性 内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 POM属性 用户可以使用该属性引用POM文件中对 ...

  9. maven学习笔记一(认识maven)

    mavn是什么? Maven是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvn clean install,Maven会帮我们处理那些繁琐的任务.Maven是跨平台的. ...

随机推荐

  1. ORACLE / PLSQL 插入或更新数据的几种方式

    第一种,直接用values 插入 ---日期需要用TO_DATE操作 INSERT INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE , SAL ,COMM, DEPT ...

  2. FileStream常用的属性和方法 (转)

    对流进行操作时要引用 using System.IO; 命名空间 FileStream常用的属性和方法: 属性: CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取 CanW ...

  3. VS2015许可证过期

    VS2015过期激活方法

  4. 实现DIV居中的几种方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. php调用C代码的实现方法

    在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用2 由于php的性能问题,需要用C来实现部分功能 针对第一种情况,最合适的方法是用system调用,把现有C代 ...

  6. HTTP与HTTPS异同/HTTP1.0与HTTP1.1差别

    HTTP状态码 分类 解释 描述 1XX 信息 服务器收到请求,需要请求者继续执行操作 2XX 成功 操作被成功接收并处理 3XX 重定向 需要进一步的操作以完成请求 4XX 客户端错误 请求包含语法 ...

  7. What can be use as an encoder

    原于2018年5月在实验室组会上做的分享,今天分享给大家,希望对大家的科研有所帮助.

  8. java简易excel导入导出工具(封装POI)

    Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...

  9. 嵌入式驱动开发之spi---spi串口通信调试

    一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是:          * SPICLK     : 用于传输数据的同 ...

  10. (转)SQL执行顺序

    SQL语句理解:http://blog.jobbole.com/55086/ 窗口函数/分析函数:http://blog.csdn.net/mfkpie/article/details/1636451 ...