使用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进行部署。





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



能够总浏览器中看到我们刚才上传的这个project。




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

相同,在前面新建的mavenproject中的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






posted @ 2018-03-03 15:47  zhchoutai  阅读(215)  评论(0)    收藏  举报