• 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

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/mannixiang/p/8504983.html
Copyright © 2020-2023  润新知