zoukankan      html  css  js  c++  java
  • maven仓库--搭建局域网私服(windows版)

    使用nexus搭建局域网私服

    一. 认识mav仓库

    1.1 maven仓库的作用

      回想之前不用maven的时候,我们用eclipse原始的项目骨架构建项目时,在工程目录下往往有一个lib文件夹用来存放工程所需jar文件,每次建一个新工程时都会有这样一个lib文件夹。然后将jar复制进lib文件夹配置路径,很显然有大量的重复工作,而且不同项目所用jar包不尽相同,需要我们慢慢去分辨。而后我们用了项目管理工具比如svn或者git,我们需要把把大量的jar文件引入代码库,这也不是一件很合适的事。
      而maven能够帮我们解决这些问题,maven仓库是专门用来存放jar文件的位置(也可以用来存放项目war,zip,pom等文件)。maven仓库中为每个jar文件分配了一个坐标,比如jstl的jar包:

    <groupId>javax.servlet</groupId>        组ID
    <artifactId>jstl</artifactId>           构建ID
    ...  其余属性后续介绍

    这样做的话,maven能很方便的进行项目依赖版本的控制。简单说maven仓库就是帮我们统一管理项目构件。

    1.2 maven仓库分类

    maven仓库分类

      项目构建的查询路径:首先查询本地仓库,未找到就会查询中央仓库,没找到就会报错。中央仓库地址有:

    1. http://www.sonatype.org/nexus/ 私服nexus用
    2. http://mvnrepository.com/ 推荐使用
    3. http://repo1.maven.org/maven2
      上面三个是较为常见的,也是项目中使用较多的,但是由于下载速度太慢,并且仓库的jar文件不完整,实际企业开发需要我们搭建私服仓库。

    二. 安装使用nexus

      这里注意搭建maven私服不仅仅只有这一种工具。博主用的版本是nexus-2.12.0。

    1. 点击下载,密码: 8mel
    2. 下载完成后解压即可,解压完成到目录nexus-2.12.0-01-bundle exus-2.12.0-01injsw下可以看到:nexus安装图1
    3. 博主电脑是64位所以打开最后一个文件夹:
      nexus安装图2
    4. 点击第二个bat文件设置为windows服务,开启nexus后访问网址 http://localhost:8081/nexus/启动后打开如下页面,即代表nexus安装并启动成功。image

    三. 配置maven私服

    1. 点击右上角Login登陆,初始账号为admin,密码是admin123 登陆成功可修改账号密码,自己找。
    2. 点击左边的导航Respositories。
      私服搭建1
      可以看到默认有一些仓库,仓库类型Type或名称的意义:
    • hosted 宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动等商业软件的jar包
    • proxy 代理远程的仓库,比如上面写得三个maven远程仓库。如果本地不存在某些jar文件时就会到这些代理站点去下载。
    • releases 内部的模块中release模块的发布仓库
    • snapshots 发布内部的snapshot模块的仓库
    • 3rd party 第三方依赖的仓库,本地上传jar包后使用
    • group 组仓库,用来添加其他的仓库,方便开发人员设置
      开始搭建私服仓库,值得注意的是:maven项目索引:maven项目索引就是用来方便在私服站点查找相关依赖构建的功能。所以在搭建私服之前,应该下载maven索引,10M足左右,将仓库的索引下载选项改成true后保存;maven私服搭建2保存后可以在Adminstration下--Scheduled Tasks可以看到下载进度是running,下载完之后在左侧搜索栏搜索jar包比如所有spring就会出现索引
    • 这一步是必不可少的如果所以呢无法下载,或者下载完之后任然无法搜索,可以查看nexus的日志进行排错(也可以在我博客下面留言,一起踩坑):
    • 3.添加自己代理的远程库,有时候我们的项目需要引入一些特殊的jar文件,比如Jboss的某些jar包,这时候也可以在私服中代理该远程仓库:
      maven私服搭建3
      点击add后添加代理类型,依次填写id,name和url,这样的话,在项目中不再需要在pom.xml中配置远程仓库:
    <repository>
        <id>jboss</id>
        <name>JBoss Repository</name>
        <url>http://repository.jboss.com/maven2/</url>
        <releases>
            <updatePolicy>daily</updatePolicy><!-- never,always,interval n -->
            <enabled>true</enabled>
            <checksumPolicy>warn</checksumPolicy><!-- fail,ignore -->
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <layout>default</layout>
    </repository>

    4.宿主仓库的使用,上面提到的一些特殊的商业性质相关的jar文件,比如oracle的驱动包,ojdbc.jar并不支持远程下载,这时候可以将我们本地下载好的jar包上传到私服。
    宿主仓库
    注意GAV设置要与你pom.xml中一致,上传后添加到Artifacts点击上传即可:
    宿主仓库2
    5.由于私服仓库数量过多,导致配置复杂度提高,所以需要用到上述的group类型仓库:
    maven私服搭建4
    切记点击刷新,刷新后点击唯一的一个group仓库,点击配置Configuration就可以看到刚才我们手动添加的代理仓库,然后将代理仓库添加到组仓库,这样依赖,项目中之需要配置组仓库的url就可以访问多个私服仓库。

    值得注意的是:左侧的仓库列表是有序的,以前在pom.xml中配置自定义仓库的时候都会把速度快的仓库放在前面(因为maven是在找不到下载jar包才会去下一个仓库下载,然后下载慢的并不会跳过)所以在左侧的列表中把下载快的放在前面,直接拖动即可,下面是两个比较快的仓库:

    <repository>
        <id>nexus</id>
        <name>local private nexus</name>            开源中国的
        <url>http://maven.oschina.net/content/groups/public/</url>
    </repository>
    <repository>
        <id>alimaven</id>
        <name>aliyun maven</name>                   阿里巴巴的
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </repository>

    四. 局域网使用maven私服

    4.1 单个项目使用maven私服

    在上述步骤完成后,即可在项目中引用私服,在pom.xml中改变默认下载仓库url:
    指定私服仓库,我的ip是170,不要全盘复制

    <repositories>  
        <repository>  
            <id>nexus</id>  
            <name>nexus</name>  
            <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>true</enabled>  
            </snapshots>  
        </repository>  
    </repositories>

    指定插件仓库

    <pluginRepositories>  
        <pluginRepository>  
            <id>nexus</id>  
            <name>nexus</name>  
            <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>true</enabled>  
            </snapshots>  
        </pluginRepository>  
    </pluginRepositories>

    配置好之后就可以从私服下载依赖包了。但是这种方式只能在改项目中起作用,每次配置项目都需要写一遍,为了将懒人模式进行到底,我们还可以指定全局的私有仓库。

    4.2 全局指定私服

    找到maven文件的中的setting.xml文件
    setting.xml
    改变setting.xml中的配置:
    在以下是配置的

    </mirrors>  
        <mirror>  
              <id>central</id>  
              <mirrorOf>*</mirrorOf>  
              <name>Central Repository</name>  
              <url>http://192.168.1.170:8081/nexus/content/groups/public/</url>  
        </mirror>  
    </mirrors>  

    这样一来,这台电脑上所有maven项目下载jar文件时都会先访问局域网170的电脑的中央仓库。
    -----------------------------------windows配置私服完毕-----------------------------------
    扩展:setting,xml中各标签的意义:

    1.servers(服务器)

    <servers>
        <server>
            <id>server001</id>
            <username>my_login</username>
            <password>my_password</password>
            <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
            <passphrase>some_passphrase</passphrase>
            <filePermissions>664</filePermissions>
            <directoryPermissions>775</directoryPermissions>
            <configuration></configuration>
        </server>
    </servers>

    id与pom.xml中distributionManagement的id保持一致,服务器标识
    username和password表示服务器认证需要的用户民和密码
    privateKey, passphrase一组密钥 (不常用)
    filePermissions, directoryPermissions如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(不常用)
    2.mirrors(镜像)

    <mirrors>
        <mirror>
            <id>planetmirror.com</id>
            <name>PlanetMirror Australia</name>
            <url>http://downloads.planetmirror.com/pub/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    设置一个中央仓库的镜像,看仓库分类,也是远程仓库的一种配置方式。
    3.profiles(构建环境)
    这个可能比较难理解,maven权威指南一书中这样说:

      Profile能让你为一个特殊的环境自定义一个特殊的构建;
      构建环境的两个例子是产品环境和开发环境。当你在开发环境中工作时,你的系统可能被配置成访问运行在你本机的开发数据库实例,而在产品环境中,你的系统被配置成从产品数据库读取数据。Maven能让你定义任意数量的构建环境(构建profile),这些定义可以覆盖pom.xml中的任何配置。

    简单理解就是你可以先profile中先构件好项目运行的环境,比如预设了A环境实在开发中使用,而实际上线是B环境,那么在上线的时候我们不需要一个个修改pom.xml中的配置,只需要激活改profile即可。
    4.activation(激活构建环境 )

    <activation>
        <activeByDefault>false</activeByDefault>
        <jdk>1.5</jdk>
        <os>
            <name>Windows XP</name>
            <family>Windows</family>
            <arch>x86</arch>
            <version>5.1.2600</version>
        </os>
        <property>
            <name>mavenVersion</name>
            <value>2.0.3</value>
        </property>
    </activation>

    指定profile中配置的环境在什么时候开始生效
    5.activeProfiles(激活了的profile)

    <activeProfiles>
    <activeProfile>env-test</activeProfile>
    </activeProfiles>

    在setting.xml最后的一个标签,表示env-test这个profile已被激活

    以上单纯代表博主个人看法,如有理解错误或者疑问请拍砖指教。
    参考资料:《Maven权威指南》 ,Maven学习 (四) 使用Nexus搭建Maven私服

  • 相关阅读:
    deflate树与deflate编码
    生产者消费者模式下的并发无锁环形缓冲区
    环形缓冲区的设计及其在生产者消费者模式下的使用(并发有锁环形队列)
    zeromq源码分析笔记之无锁队列ypipe_t(3)
    zeromq源码分析笔记之线程间收发命令(2)
    zeromq源码分析笔记之架构(1)
    PHP和golang差异见解
    关于助力红包随机分配思考总结
    TCP四次挥手
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/fxmemory/p/7133672.html
Copyright © 2011-2022 走看看