文档章节

MAVEN仓库-私服(转载)

吹比龙
 吹比龙
发布于 2017/07/28 13:14
字数 1394
阅读 38
收藏 0

3 月,跳不动了?>>>

原文地址:http://blog.csdn.net/catoop/article/details/62312477

转载防丢失

私服是什么?

私服,即私有服务器,是公司内部Maven项目需要通过其下载依赖包和插件的一个内部maven仓库。Nexus是常用的私用Maven服务器,一般是公司内部使用。

常用功能和介绍

将自己的Maven项目指定到私服地址 
从私服下载中央库的项目索引 
从私服下载中央库的项目索引 
将第三方项目jar上传到私服供其他项目使用

Nexus 安装后,默认端口为8081,访问 http://192.168.x.x:8081/nexus/index.html 打开页面,默认账号密码为:admin/admin123

下面是登录后的截图: 
这里写图片描述 
其中左侧菜单中的Repositories比较常用。

一般用到的仓库种类是hosted和proxy。 
Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如Oracle驱动、比如商业软件jar包、公司开发的jar包库。

Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目的用户电脑本地仓库没有依赖包,那么就会去Proxy代理站点(即Nexus私服)去下载,那么如果代理站点也没有此依赖包,就会去远程中央仓库下载依赖。代理站点(私服)下载成功后再下载至用户本机仓库。

其实Maven这个自带的默认仓库一般情况下已经够大多数项目使用了。特殊情况时在配置新的仓库,比如增加JBoss仓库等(配置指定url即可)。

如下,描述了用户电脑、私服、远程中央仓库的关系图: 
这里写图片描述

仓库的类型

hosted 类型的仓库,内部项目的发布仓库 
releases 内部的模块中release模块的发布仓库 
snapshots 发布内部的SNAPSHOT模块的仓库 
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去 
proxy 类型的仓库,从远程中央仓库中寻找数据的仓库 
group 类型的仓库,组仓库用来为了方便我们开发人员而进行设置的仓库

Maven项目索引

下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能。 
这里写图片描述

保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks(再左侧菜单Administration组中)选项即可看到有个任务在RUNNING。 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如 spring-core,下图是一个示范(就可以检索出它的相关信息,包括怎么配置依赖信息):

这里写图片描述

配置使用私服

我们要想使用这个私服仓库,先在项目pom中配置相关私服信息指定仓库,如下片段需要配置到maven项目的 pom.xml 中。

    <repositories>  
        <repository>  
            <id>nexus</id>  
            <name>nexus</name>
            <url>http://192.168.x.x: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.x.x:8081/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>true</enabled>  
            </snapshots>  
        </pluginRepository>  
    </pluginRepositories> 
  • 这样配置完成后,项目才会在私服下载组件。

因为我们这个配置是配置在具体项目的 pom.xml 中的,所以只会对一个项目有效。如果我们想对自己电脑上的所有 maven 项目都启用这个私服配置,那么就需要将私服信息配置到 maven 的全局配置文件 settings.xml 中,其位置位于 apache-maven/conf/settings.xml

修改 settings.xml 中的profiles内容为:

  <profiles>
    <profile>
       <id>nexus-central</id>
       <repositories>
        <repository>
          <id>nexus-central</id>
          <name>nexus-central</name>
          <url>http://192.168.1.117:8081/nexus/content/groups/public/</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
     </profile>
  </profiles>
  • 并且激活这个 profile
  <activeProfiles>  
    <activeProfile>nexus-central</activeProfile>     
  </activeProfiles>  
  • 之后所有本机的Maven项目就都会在这个私服下载组件(这样比较方便)

项目发布到私服

再 maven 工程的 pom.xml 中添加如下配置:

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.x.x:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.x.x:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
  • j仅仅这样配置还不够,发布项目到私服肯定会失败,因为我们还没有配置权限,没有配置权限发布项目应该会出现401错误码,所以我们需要在 maven 的 settings.xml 中配置私服权限账号信息,如下:
    <!-- servers节点的属性是在向仓库发布时使用 -->
    <servers>
        <server>
            <!-- 这个ID要和项目pom.xml中distributionManagement下的ID一致 -->
            <id>nexus-releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <!-- 这个ID要和项目pom.xml中distributionManagement下的ID一致 -->
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
  •  

这里写图片描述

注意图中的Respository中的id一定要和server下的id一致,切记!!否则出现权限问题。

然后运行命令发布 
mvn clean deploy

在控制台提示发布成功后,进入到私服上的仓库中,看一下确实存在刚刚发布的项目。

这里写图片描述

宿主库 — 3rd party

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

这里写图片描述

上传后到 Browse Index 中查看结果。

 

本文转载自:http://blog.csdn.net/catoop/article/details/62312477

吹比龙
粉丝 10
博文 135
码字总数 38713
作品 0
合肥
程序员
私信 提问
加载中

评论(0)

Maven学习五之Nexus中各repository介绍

这时候已经搭建好了Nexus,要做操作前先登录,默认用户名admin,默认密码admin123。来看看各个Repository。点击左侧Repositories。 一 Public Repositories 先来看仓库类型 hosted:本地仓库...

第三方那块
2017/11/13
0
0
搭建Maven私服-Nexus

Maven 私服,可以代理远程仓库和部署自己或第三方构件。本文介绍使用最广泛搭建 Maven 私服的工具: Sonatype Nexus。 nexus 作者环境 本次搭建私服是在局域网的一台服务器上,操作系统为 Ce...

SuShine
2018/08/08
0
0
[Maven实战](6)仓库(本地仓库,远程仓库,镜像)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/50587876 1. 简介 maven可以在某个位置统一存储所有maven项目共享的构件,这个统...

sjf0115
2016/01/26
0
0
Maven发布工程到私服

所谓发布工程就是把工程打包成jar包,然后选择上传到私服的某个仓库里,然后其他人就可以在私服上的仓库中下载到你发布的工程。 简单介绍Nexus上自带的一些仓库: 如果想要发布工程是需要一个...

技术小阿哥
2017/11/27
0
0
Eclipse中Maven插件的使用技巧及原理

出处地址:http://www.cnblogs.com/V1haoge/p/6698699.html   题目有点大,这里只是自己对Maven插件的一些使用总结,可能会涉及到一些其他的内容,后续会继续补充,在此做个记录,也便于自...

技术小胖子
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是反射,为什么有用? - What is reflection and why is it useful?

问题: What is reflection, and why is it useful? 什么是反射,为什么有用? I'm particularly interested in Java, but I assume the principles are the same in any language. 我对Jav......

技术盛宴
32分钟前
9
0
SSM框架整合

mybatis逆向工程 mybatis-generator生成pojo、mapper接口及映射文件 mapper放到e3-manager-dao层中 导入sql到数据库中; 导入逆向工程工具,配置xml文件 运行main方法 重复运行main不会覆盖!...

七宝1
今天
30
0
OSChina 周日乱弹 —— 和网友的第一次开房经历

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Ljósið》- Ólafur Arnalds 手机党少年们想听歌,请使劲儿戳(这里) @xiaos...

小小编辑
今天
54
0
程序员职业生涯指引

程序员应该尽早规划自己的职业生涯 为什么写 众所周知 IT 这一行到了一定的年龄、大部分人都或多或少有危机感,特别是今年全国乃至全球发生的疫情、导致整体经济受到很大的影响、这次的疫情影...

科比可比克
今天
11
0
JVM调优实战分析

一、查看服务器项目JVM参数以及参数分析 1、jps 命令 : 列出系统中所有的 Java 应用程序以及PID 如下图所示,26647就是我部署在服务器的一个小项目的 PID 2、jmap命令:查看堆的使用情况 如...

IT-Mamba
今天
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部