zoukankan      html  css  js  c++  java
  • maven仓库--私服(Nexus的配置使用)

    1.1 私服仓库是什么

      私服,私有服务器,是公司内部Maven项目经常需要的东东。Nexus是常用的私用Maven服务器,一般是公司内部使用。其作用指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。

    1.2 Nexus中的仓库

    1.2.1 类型介绍:

      ?  hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。

      ?  proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

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

    技术分享

    1.2.2 管理本地仓库

      我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

      Releases:

        这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.

      Snapshots:

        这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

      3rd Party:

        顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛,没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

    1.2.3 maven项目索引

      下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能

    技术分享

      保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks选项即可看到有个任务在RUNNING。 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如:junit

    技术分享

    1.3 配置私服链接

      在项目的pom.xml或者settings.xml文件里加入一下配置信息(区别,pom.xml是针对当前项目,settings.xml是全局的针对所有项目)

    1.3.1 pom.xml  针对当前项目

    配置相关私服信息指定仓库:

        <repositories>
            <repository>
                <id>nexus</id>
                <name>nexus</name>
                <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
                <!-- Release版本则代表稳定的版本 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- Snapshot版本代表不稳定、尚处于开发中的版本,默认关闭,需要手动启动 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>

    指定插件仓库:

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

    1.3.2 settings.xml  针对全局所有项目

    1.3.2.1 Maven仓库组:

      我们可以建立多个proxy代理仓库,hosted本地仓库, 如果没有仓库组的概念,我们如果需要引用这些仓库的是时候需要一一加入到我们的setting.xml里面去, 有了仓库的组的概念, 我们只需要做一次引用就可以了,把我们需要的仓库加入到仓库组即可。如下:

        <!-- 配置相关私服信息指定仓库 -->
        <profiles>
            <profile>
                <id>nexusProfile</id>
                <repositories>
                    <repository>
                        <id>nexus</id>
                        <name>nexus Repository</name>
                        <url>http://localhost:8081/nexus/content/groups/public/</url>
                        <layout>defult</layout>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                        <!-- snapshots默认是关闭的false,必须显示的打开 -->
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                    </repository>
                </repositories>
            </profile>
        </profiles>
    <!-- 激活 --> <activeProfiles> <activeProfile>nexusProfile</activeProfile> </activeProfiles>

      仓库组默认包含本地仓库Releases,snapshots, 3rd party和代理仓库MavenCentral. 你可以在Configuration配置页添加仓库到这个仓库组. 如果需要你还可以创建一个仓库组,在Repositories菜单处选add-->Repository Group即可:

    技术分享

    1.3.2.1 配置仓库镜像:

      默认的,如果本地仓库找不到依赖的构件,这时需要东西时先到Nexus上找,如果发现Nexus服务关闭后,会自动到中央仓库找。

      如果我们想覆盖中央仓库的默认地址,强制依赖的东西都到Nexus中去找,即使Nexus关闭也不会到中央工厂去下载:

        <!--工厂的镜像,只要工厂的访问,都会自动来找镜像,如果镜像里面没有找到就无法访问,就停止下载了 -->
        <mirrors>
            <mirror>
                <id>nexusMirror</id>
                <mirrorOf>nexus</mirrorOf>
                <name>Human Readable Name for this Mirror.</name>
                <url>http://localhost:8081/nexus/content/groups/public/</url>
            </mirror>
        </mirrors>

    1.3.3 配置项目发布

      <distributionManagement>  
            <repository>  
                <id>user-release</id>  
                <name>User Project Release</name>  
                <url>http://192.168.1.103:8081/nexus/content/repositories/releases/</url>  
            </repository>  
      
            <snapshotRepository>  
                <id>user-snapshots</id>  
                <name>User Project SNAPSHOTS</name>  
                <url>http://192.168.1.103:8081/nexus/content/repositories/snapshots/</url>  
            </snapshotRepository>  
        </distributionManagement>  
    注意配置了还是发布项目到私服失败,原因为没有权限,会出现401错误码,原因就是权限不够。
     
    配置权限在settings.xml:
    技术分享
     
    技术分享
     
    注意Respository中的id一定要和server下的id一致,切记!!否则出现权限问题。
     
    然后运行发布
     
    clean deploy
     
    在控制台发布成功
     
    然后进入到私服上的仓库中,看一下确实存在刚刚发布的项目
    技术分享

    1.4 宿主库——3rd party

      假如我们下载了Oracle的驱动程序jar包想给其他项目组使用,就需要上传该jar包。选中宿主库——3rd party,之后选择Artifact Upload上传至宿主空间。
     
    技术分享
     
    技术分享
     
      最后点击上传
     
    技术分享

    1.5 如果本地仓库有东西,但Nexus中没有

      需要将该东西考到Nexus仓库中,然后更新仓库索引:

    技术分享

    本文参考:zec0910的专栏大鹏

    本文出自:艺意

    maven仓库--私服(Nexus的配置使用)

    标签:这一   项目发布   project   image   lin   rac   lan   配置使用   load   

    原文地址:http://www.cnblogs.com/wkrbky/p/6358363.html

  • 相关阅读:
    javascript内部原理篇[__proto__和prototype]
    javascript内部原理篇[进入上下文之前javascript所做的工作]
    jQuery Wookmark-2 jQuery动态表格插件的效果展示
    jQuery Wookmark
    jQuery Handsontable【jQuery插件-一个非常酷的可编辑表格】
    C#实现union以及lock的使用
    VC++编程中常用的字符串转换函数
    浅谈__declspec(dllexport)和__declspec(dllimport)
    C++宏定义中"#"与"##"的妙用
    Log4Cplus的介绍
  • 原文地址:https://www.cnblogs.com/mannixiang/p/8504983.html
Copyright © 2011-2022 走看看