使用nexus搭建Maven私服

----------------------------------------------------------------------------------------------
[版权申明:本文系作者原创,转载请注明出处] 
文章出处:http://blog.csdn.net/sdksdk0/article/details/52190619
作者:朱培      ID:sdksdk0      邮箱: zhupei@tianfang1314.cn   
--------------------------------------------------------------------------------------------

一、简介

Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。

maven和ant都是软件构建工具(软件管理工具),maven比ant更加强大,已经取代了ant,jar包的声明式依赖描述。maven有jar包的仓库。svn是一个软件的版本控制工具,是一个协同开发工具。svn的仓库存放的是项目的源码,历史版本的备份,声明每次版本的修改情况。

二、私服搭建场景

有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。

三、nexus部署

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

第一步:下载nexus-webapp-2.6.2.war包,然后拷贝到tomcat下的webapps目录中

第二步:启动tomcat 默认登录账户密码为: admin  admin123 ,点击右上角进行登录。

第三步:访问http://localhost:8080/项目名称/

四、  repository

Nexus仓库的默认的地址,nexus-2.1.2\WEB-INF\plexus.properties 中定义的

在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的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。

virtual:也是中央仓库镜像,支持M1老版本

 

- hosted :宿主仓库 ,该仓库属于该公司私有的
        1. 3rd part : 第三方的jar包,但是该jar包没有在中心仓库保存,驱动.jar
    2. snapshot :测试版本、镜像版本  easyNet.war
    3. release  : 发行版本
      - proxy  : 代理仓库  :代理中心仓库的jar包
        
      - public :仓库组 :虚拟的概念  可以包含其他的仓库

五、上传jar包到nexus

5.1 直接在nexus管理后台上传

直接选中你想要上传到哪个库中,可以设置组。这里以上传pig的jar为例。选择3rd party,然后填写maven的坐标(groupId+artifactId+version)。

我们可以在浏览器中查看是否已经上传成功。这里可以看到已经有pig这个文件夹了。

5.2 使用myeclipse上传

在myeclipse中配置maven我在这里就不再说明了,网上有非常多的资料。我们可以在myeclipse中新建一个web项目,命名为:nexusMaven,并为其添加maven支持。在生成的这个maven项目中找到pom.xml,进行如下配置。

    <distributionManagement>
  <!-- 发布到 快照版本的仓库,即 测试版本仓库 -->
  <snapshotRepository>
  <id>snapshots</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
  </snapshotRepository>
  <!-- 发布到 发行版本的仓库中,也可以发布到3rd party 仓库 -->
  <repository>
    <id>releases</id>
  <url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
  </repository>
  </distributionManagement>
  

同时需要到我们的maven的conf目录下的settings.xml添加账号密码支持。大约在114行后面的servers中配置:

 <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
	<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>

然后回到我们的myeclipse的项目中,右键这个项目,run as   ->  maven build  ,然后输入deploy进行部署。

这样我们的工程就上传到了私服中。

可以总浏览器中看到我们刚才上传的这个工程。

六、从私服下载(引用)jar包

同样,在前面新建的maven工程中的pom.xml中进行配置。

<!-- 依赖pig.jar包,存在私服中  -->
  <!-- maven坐标 -->
    <dependency>
      <groupId>pig</groupId>
      <artifactId>pig</artifactId>
      <version>0.12.1</version>
    </dependency>
  </dependencies>

  <!-- 假如没有私服 ,则 本地仓库找不到,则访问中心仓库
       假如有私服 :访问顺序
         首先访问本地仓库
     本地仓库没有,则访问私服仓库
     私服仓库也没有,则访问中心仓库
   -->
   <!-- 加载的是 第三方项目使用的jar包 -->
   <repositories>
    <repository>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>public</id>
      <name>public</name>
      <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
    </repository>
  </repositories>

  <!-- 加载的是maven生命周期插件的jar包 -->
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>public</id>
      <name>public</name>
      <url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
    </pluginRepository>
  </pluginRepositories>

总结:使用nexus来搭建maven私有服务器是非常实用的功能,对于maven的环境搭建这里就不再重复啰嗦了。项目组开发人员开发时,只要在项目的pom.xml文件中,添加如下pom.xml信息即可获取私服的jar.如果添加其他的构件时,会先在nexus私服下载好,以后才会下载到本地。以后,如果发现私服已经存在某一jar包,则会直接从私服下载,如果没有再去网络上下载。这就是搭建私服的好处.

源码下载:https://github.com/sdksdk0/nexusMaven

时间: 2024-11-03 10:23:45

使用nexus搭建Maven私服的相关文章

Nexus搭建Maven私服

1. 为什么使用Nexus         如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程.很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服

Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服

1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地, 而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程. 很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用? 这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目

Sonatype Nexus 搭建Maven 私服

1. 为什么使用Nexus          如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程.很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私

nexus搭建maven私服的问题

问题描述 使用nexus搭建私服,在settings.xml 里面配置了如下的片断: <mirror> <id>nexus</id> <url>http://localhost:8081/nexus/content/groups/public</url> <mirrorOf>*</mirrorOf> </mirror> 现在我的项目需要下载新的jar包时,nexus只会在本地找一遍,找不到就报错了,如何能让ne

Nexus搭建maven私服库遇到的权限问题,求大神解决

问题描述 我现在已经搭好了一个私服,但是我想将使用私服的人进行权限管理(不是页面端),开发项目的时候,需在POM中使用用户名和密码登陆,并给与相应的对repository的权限管理,有解决方案吗?因为我从网上找到的大部分都是nexus页面端的权限控制. 解决方案

maven 仓库 使用nexus搭建了私服在局域网另一台电脑上

问题描述 maven 仓库 使用nexus搭建了私服在局域网另一台电脑上 maven 仓库 使用nexus搭建了私服在局域网另一台电脑上,本来正常的,今天要加个依赖,去查找log4j报错 An internal error occurred during: "Repository search". java.lang.OutOfMemoryError: Java heap space 解决方案 刷新下Maven项目,可能是私服地址配置的不对,页可能你加的这个依赖在其它库中,中央仓库里下

搭建Maven私服(使用Nexus)

搭建私服可以做什么? 1.如果公司开发组的开发环境全部内网,这时如何连接到在互联网上的Maven中央仓库呢? 2.如果公司经常开发一些公共的组件,如何共享给各个开发组,使用拷贝方式吗?如果这样,公共库升级了怎么办? 当然可以解决的问题可能不止上面两点,下面来介绍在Linux中搭建自己的Maven私服,使用Nexus. 一.下载和安装 网址:http://www.sonatype.org/nexus/go/ 下载包:nexus-2.12.0-01-bundle.tar.gz 解压包:tar -zx

[转]搭建Maven私服

在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的.另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新.可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理.       这里使用Nexus来搭建本地的Maven服务器,过程比较简单.       一.安装服务器       1.下载       我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到

持续集成之路——搭建Maven私服

      在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的.另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新.可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理.       这里使用Nexus来搭建本地的Maven服务器,过程比较简单.         一.安装服务器       1.下载       我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/