`
fycgs
  • 浏览: 8188 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

window下Nexus私服高级搭建

阅读更多

公司访问外网有限制,项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上

环境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32

一、用admin用户登陆nexus

nexus的下载和安装都很简单

1.下载 
http://www.sonatype.org/nexus/go
这里我们下载window 环境下的nexus文件
http://www.sonatype.org/downloads/nexus-2.1.1-bundle.zip

2.安装和启动服务
下载完成后,在盘符上新建nexus 文件夹,将
nexus-2.1.1-bundle.zip解压到nexus目录中。

3、配置环境变量
NEXUS_HOME=E:\nexus\nexus-2.1.1 
PATH 添加 %NEXUS_HOME%\bin\jsw\windows-x86-32

4、执行nexus 服务安装  
   install-nexus.bat 服务安装成功后   
   console-nexus.bat 在控制台nexus服务项目
   start-nexus.bat 启动nexus服务

5、如果启动报错(错误如下)
wrapper  | The nexus service was launched, but failed to start. 
  关闭window,重新启动

6、window 启动后,再次找到nexus服务,启动或者停止,看服务是否正常。
7、地址栏上输入
http://localhost:8081/nexus 
如果到此处,都一切正常说明,你成功了!
默认用户名admin,密码为admin123

 

nexus的配置需要用admin角色完成,默认的密码是admin123,进入nexus首页之后,点击右上角,进行登录

然后就可以在左边的菜单中进行配置了

二、为nexus配置代理服务器

由于这台机器需要通过代理才能访问外网,所以首先要配置代理服务器,在Administration-->Server中进行配置



配置之后,nexus才能连上central repository,如果私服所在机器可以直接上外网,则可以省略这一步

三、配置repository

在Views/Repositories-->Repositories里进行配置



nexus里可以配置3种类型的仓库,分别是proxy、hosted、group

proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用

hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里

group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了

nexus装好之后,已经初始化定义了一些repository,我们熟悉之后,就可以自行删除、新增、编辑

右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还以为是BUG,其实是被浏览器缓存了

四、配置Central Repository的proxy

最关键的一个配置,可能就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的



在安装完nexus之后,这个proxy是预置的,需要做的就是把Download Remote Indexes改为true,这样nexus才会从central repository下载索引,才能在nexus中使用artifact search的功能

网络上有一些其他公开的maven仓库,可以用同样的办法,在nexus中设置proxy,但是并不是所有maven仓库,都提供了nexus index,这种情况下,就无法建立索引了

五、配置hosted repository

一般会配置3个hosted repository,分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版



这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止

六、配置group repository

前面说过,group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址



这里要注意的是,放到左边的仓库,才是会被聚合的仓库。我昨天一直搞错了,把仓库都放到右边,结果group什么都没有聚合到,是一个空的仓库。。。

七、配置用户密码

在Security-->Users中配置,在deployment用户上点击右键,选择Set Password,然后设置一个密码,做这个操作是为了后面提交做准备



八、在用户机器上配置settings.xml

经过前面的7个步骤,nexus就配置好了,接下来需要在每个开发人员的开发机器上进行配置了

配置文件在%USER_HOME%/.m2/settings.xml

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"    
  4.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  5.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  6.     
  7.   <servers>  
  8.      
  9.     <server>  
  10.         <id>nexus-snapshots</id>  
  11.         <username>deployment</username>  
  12.         <password>deployment</password>  
  13.     </server>  
  14.   
  15.   </servers>  
  16.      
  17.   <mirrors>  
  18.      
  19.     <mirror>  
  20.         <id>nexus</id>  
  21.         <name>internal nexus repository</name>  
  22.         <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>  
  23.         <mirrorOf>central</mirrorOf>  
  24.     </mirror>  
  25.        
  26.   </mirrors>  
  27.      
  28. </settings>  
<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
  <servers>
  
  	<server>
  		<id>nexus-snapshots</id>
  		<username>deployment</username>
  		<password>deployment</password>
  	</server>

  </servers>
  
  <mirrors>
  
  	<mirror>
  		<id>nexus</id>
  		<name>internal nexus repository</name>
  		<url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
  		<mirrorOf>central</mirrorOf>
  	</mirror>
  	
  </mirrors>
  
</settings>


这里只配置了2个元素<mirrors>和<servers>

首先这里配置了一个id为nexus的镜像仓库,地址是前面配置的public group的URL,然后镜像目标是central

maven里的超级pom,里面配置了这样一段:

Xml代码 复制代码 收藏代码
  1. <repositories>  
  2.     <repository>  
  3.       <id>central</id>  
  4.       <name>Central Repository</name>  
  5.       <url>http://repo.maven.apache.org/maven2</url>  
  6.       <layout>default</layout>  
  7.       <snapshots>  
  8.         <enabled>false</enabled>  
  9.       </snapshots>  
  10.     </repository>  
  11.   </repositories>  
  12.   
  13.   <pluginRepositories>  
  14.     <pluginRepository>  
  15.       <id>central</id>  
  16.       <name>Central Repository</name>  
  17.       <url>http://repo.maven.apache.org/maven2</url>  
  18.       <layout>default</layout>  
  19.       <snapshots>  
  20.         <enabled>false</enabled>  
  21.       </snapshots>  
  22.       <releases>  
  23.         <updatePolicy>never</updatePolicy>  
  24.       </releases>  
  25.     </pluginRepository>  
  26.   </pluginRepositories>  
<repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>


因此,当本地的maven项目,找不到需要的构件(包括jar包和插件)的时候,默认会到central里获取

所以我们刚刚配置的镜像仓库,id也是central,这样本地maven项目对central repository的请求,就会转到镜像仓库上,也就是我们设置的nexus私服上

由于我们在项目的pom里,不会再配置其他的<repositories>和<pluginRepositories>元素,所以只要配置一个central的mirror,就足以阻止所有的外网访问。如果pom中还配置了其他的外网仓库,比如jboss repository等,可以把<mirrorOf>改为*

至于<servers>元素,是因为我们把项目内部的构件上传到nexus的仓库中时,nexus会进行权限控制,所以这里需要设置权限相关的信息。注意这里的<id>nexus-snapshots</id>,和后面maven工程里的pom设置是一致的

由于我们这里已经屏蔽了对外网仓库的请求,所以就不需要配置代理服务器了,如果需要配置代理服务器,可以用<proxies>元素

九、配置maven项目的pom文件

下面是简化后的pom文件:

Xml代码 复制代码 收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   
  4.     <modelVersion>4.0.0</modelVersion>  
  5.     <groupId>com.huawei.inoc.wfm.task</groupId>  
  6.     <artifactId>task-sla</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <name>task-sla</name>  
  9.   
  10.     <!-- 配置部署的远程仓库 -->  
  11.     <distributionManagement>  
  12.         <snapshotRepository>  
  13.             <id>nexus-snapshots</id>  
  14.             <name>nexus distribution snapshot repository</name>  
  15.             <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>  
  16.         </snapshotRepository>  
  17.     </distributionManagement>  
  18.   
  19. </project>  
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.huawei.inoc.wfm.task</groupId>
	<artifactId>task-sla</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>task-sla</name>

	<!-- 配置部署的远程仓库 -->
	<distributionManagement>
		<snapshotRepository>
			<id>nexus-snapshots</id>
			<name>nexus distribution snapshot repository</name>
			<url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

</project>


这里配置了<distributionManagement>元素,其中的<id>nexus-snapshots</id>,与前面说的settings.xml中的<servers>元素中的配置必须一致

配置这个的目的,是当执行maven deploy时,才知道要将生成的构件部署到哪个远程仓库上,注意这里的URL填的就不是public group的地址:
http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/

而是snapshots的地址:
http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/

但是在nexus中,snapshots也是聚合到public group里的,所以开发人员A提交到snapshots的构件,开发人员B也可以从public group里获取到

十、eclipse中的设置

经过前面的配置,已经可以通过命令行进行maven操作了。不过实际开发中,一般都是使用eclipse的m2e插件,所以还需要对eclipse进行一些额外的配置

在Preferences-->Maven-->User Settings中,点击Update Settings,加载刚才我们对settings.xml的更改



然后在Maven Repositories视图里,可以看到仓库的情况



可以看到,从超级pom继承来的central被置灰了,不可用,后面的mirrored by nexus表示对该仓库的所有请求,都会转到镜像nexus中

十一、nexus的目录结构

nexus会安装在%USER_HOME%/sonatype-work/nexus下,有以下目录



其中的storage目录,就是构件实际存放的地址了

分享到:
评论
1 楼 极客翔天 2013-05-26  
LZ总结整理的很不错!

相关推荐

    nexus私服搭建及使用整理.docx

    nexus私服搭建及使用整理(Window和linux两种搭建方式)

    nexus私服window版

    【Nexus私有仓库在Windows环境下的安装与配置】 Nexus是Sonatype公司推出的一款开源的Maven仓库管理器,它作为一个中央存储库,可以用来托管各种类型的艺术品(如JARs、WARs、文档等),并为开发团队提供了一个集中...

    nexus-3.13.0-01windows版官网包

    官网对应的最新版nexus私服包用于配置私服。要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

    window下本地git服务器搭建详解

    本文将详细介绍如何在Windows环境下搭建一个本地的Git服务器,并结合SourceTree这一图形化客户端进行项目管理。 #### 二、准备工作 1. **Git安装**: - 访问官方下载页面:[https://git-scm.com/download/win]...

    Window CE6.0开发平台搭建详解

    Window CE6.0开发平台搭建是一项复杂而细致的工作,它涉及到多个软件的安装与配置,以构建一个完整的嵌入式系统开发环境。Windows CE6.0是一个轻量级的操作系统,广泛应用于各种智能设备和嵌入式系统。下面将详细...

    Nexus3 Maven私服持续更新

    Nexus 一个搭建Maven私服的工具 Nexus下载地址使用阿里云盘:https://www.aliyundrive.com/s/Em2hi99vGKr 下载 下载后Window版本直接运行即可,Linux版本需要运行后获取得到tar.gz包后上传系统再安装

    window下搭建python环境

    在Windows环境下搭建Python开发环境,特别是使用Eclipse与PyDev插件进行配置,是一个较为常见的需求,尤其对于那些偏好使用成熟且功能丰富的集成开发环境(IDE)的开发者来说。下面,我们将详细介绍如何在Windows...

    私服nexus安装包(3.19.1)

    本资源提供的“私服nexus安装包(3.19.1)”涵盖了Windows、Linux和Mac OS三种操作系统平台的安装文件,确保了在不同环境下都能顺利部署Nexus服务。 1. Nexus的功能: Nexus作为企业级的仓库管理器,主要功能包括...

    window 版本的Nexus的服务器

    以下是关于"window版本的Nexus服务器"的详细知识点: 1. **Nexus的基本概念**:Nexus不仅仅是一个简单的代理仓库,它还是一个全方位的软件存储库管理解决方案,支持Maven、Ivy、Gradle等多种构建工具,可以作为中央...

    window下搭建redis.zip

    标题中的"window下搭建redis.zip"指的是在Windows操作系统上安装并运行Redis服务。根据描述,这个压缩包包含了构建Redis所需的所有文件,且经过验证是可行的。 让我们逐步解析压缩包内的文件: 1. **服务构建.bat*...

    x-window下图形界面简单搭建samba服务器[整理].pdf

    本篇主要介绍如何在RHEL4系统中,利用X-Window下的图形界面搭建一个简单的Samba服务器。 首先,确保已经安装了Samba服务。Samba的安装通常涉及运行相关的安装命令,如`yum install samba`或`apt-get install samba`...

    window server 2008 R2下搭建Apache+mysql+php

    Window Server 2008 R2 下搭建 Apache+Mysql+PHP 服务器 在 Window Server 2008 R2 环境下搭建 Apache+Mysql+PHP 服务器是一个非常复杂的过程,需要逐步完成多个步骤。本文将详细介绍如何在 Window Server 2008 R2 ...

    maven window下安装包

    maven window下安装包 易学笔记-maven教程目录 第1章:Maven概述/1.1 Maven的概念 第1章:Maven概述/1.2 Maven的功能 第1章:Maven概述/1.3 与其它构建相比/1.3.1 Make 第1章:Maven概述/1.3 与其它构建相比/1.3.2...

    1.window环境下android平台搭建

    在Window环境下搭建Android开发平台是一项基础且重要的任务,对于想要从事Android应用开发或者进行系统级研究的人员来说,这是必经的步骤。本教程将详细阐述如何在Windows操作系统上配置完整的Android开发环境。 ...

    Window高级编程指南.

    Window高级编程指南 sdk开发windows应用程序

    Nexus2ForWindows

    同时,根据服务器资源情况,可以调整Nexus的配置文件(位于`nexus-2.14.11-01/conf`目录下的`nexus.properties`)来优化性能,例如修改内存分配、日志级别等。 总之,Nexus2是Maven开发环境中不可或缺的一部分,它...

Global site tag (gtag.js) - Google Analytics