背景:对Maven私服一直想做个深入的总结,因为不了解,所以感觉很陌生。

转载地址: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,下图是一个示范(就可以检索出它的相关信息,包括怎么配置依赖信息):

全局配置和用户配置的区别

变量名:M2_HOME
变量值:D:\apache-maven-2.2.1 (maven安装目录)

~在《Maven实战》中指代用户目录。比如我的用户目录C:\Users\prd-lxw

在用户目录下可以发现.m2文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository  所有的Maven构件都被存储到该仓库中,以方便重用。

默认情况下~/.m2目录下除了repository仓库之外就没有其它目录和文件了,不过大多数Maven用户需要复制M2_HOME/conf/settings.xml文件到 ~/.m2/settings.xml

这是一条最佳实践。

全局配置,M2_HOME/conf/settings.xml,整台机器上的所有用户都受该配置的影响;

用户配置, ~/.m2/settings.xml,只有当前用户才受该配置影响。

需要统一系统中所有用户的配置的时候使用全局配置,否则请使用用户配置。

推荐使用用户配置的原因是便于Maven升级,不必要每次升级都修改settings.xml文件。

配置使用私服

只对单独一个项目有效

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

<project>...<!-- 配置仓库 --><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>...
</project>

这样配置完成后,项目才会在私服下载组件。

因为我们这个配置是配置在具体项目的 pom.xml 中的,所以只会对一个项目有效。

如果我们想对自己电脑上的所有 maven 项目都启用这个私服配置,那么就需要将私服信息配置到 maven 的全局配置文件 settings.xml 中,其位置位于 apache-maven/conf/settings.xml

ps:此处可以使用用户级别的配置。

对本机所有maven有效

settins.xml并不支持直接配置repositories和pluginRepositories。但是Maven提供了Profile机制,能让用户将仓库配置防止到setting.xml中的Profile中。修改 settings.xml 中的profiles内容为:

<settings>...<profiles><profile><id>nexus</id><!-- 配置仓库 --><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></profile></profiles><!-- 激活节点nexus --><activeProfiles>  <activeProfile>nexus</activeProfile>     </activeProfiles> ...
</settings>

之后所有本机的Maven项目就都会在这个私服下载组件(这样比较方便)

配置镜像,让Maven只使用私服

如果仅仅使用上述配置,Maven除了从Nexus下载构件之外,还会不时地访问中央仓库central,我们希望的是所有Maven下载请求都仅仅通过Nexus,以全面发挥四氟的作用。这个时候可以借助Maven的镜像配置。

可以创建一个匹配任何仓库的镜像,镜像的地址为私服,这样Maven对任何仓库的构件下载请求都会转发到私服中。

<settings>
...<mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><url>http://192.168.x.x:8081/nexus/content/groups/public/</url>  </mirror></mirrors><profiles><profile><id>nexus</id><!-- 配置仓库 --><repositories>  <repository>  <id>central</id>                     <url>http://central</url>  <releases>  <enabled>true</enabled>  </releases>  <snapshots>  <enabled>true</enabled>  </snapshots>  </repository>  </repositories> <!-- 配置插件仓库 --><pluginRepositories>  <pluginRepository>  <id>central</id>                     <url>http://central</url>   <releases>  <enabled>true</enabled>  </releases>  <snapshots>  <enabled>true</enabled>  </snapshots>  </pluginRepository> </pluginRepositories></profile></profiles><!-- 激活节点nexus --><activeProfiles>  <activeProfile>nexus</activeProfile>     </activeProfiles>
...
</settings>

这里需要解释的是仓库及插件仓库配置,它们的id都是central,也就是说,覆盖了超级POM中央仓库的配置,它们的url已经无关紧要,因为所有的请求都会通过镜像访问私服地址。

配置仓库及插件仓库的主要目的是开启对快照版本下载的支持,当Maven需要下载发布版本或快照版构件的时候,它首先需要检查central,看该类型的构件是否支持,得到正面的回答之后,再根据镜像匹配规则转而访问私服仓库地址。

项目发布到私服

再 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>

上述配置中,id为该远程仓库的唯一标识,那么是为了方便人阅读,关键的url表示该仓库的地址。

仅仅这样配置还不够,发布项目到私服肯定会失败,因为我们还没有配置权限,没有配置权限发布项目应该会出现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 中查看结果。

转载于:https://www.cnblogs.com/lixuwu/p/8111773.html

(转)Maven仓库——私服介绍相关推荐

  1. 使用Nexus搭建Maven仓库私服的权限配置心得

    最近在学习Maven,学习到使用Nexus搭建私服,通过Nexus的权限机制可以实现较细粒度的权限控制,这对组织内部的团队开发很有帮助.通过实验,我总结了以下一些经验,可以实现一些权限控制的需求,在此 ...

  2. Nexus 3.X(Maven仓库私服)仓库迁移与备份

    注意修改端口号:根目录/etc/nexus-default.properties,application-port=端口号 Linux 仓库迁移 Nexus的构件仓库都保存在sonatype-work ...

  3. 上传artifacts到maven仓库

    上传artifacts到maven仓库 简单介绍几种上传jar/aar到maven仓库的方法. Maven Publish Properties Property Description artifa ...

  4. 019.nexus搭建docker镜像仓库/maven仓库

    一.安装docker CE 参考docker doc https://docs.docker.com/install/linux/docker-ce/centos/ 二.docker启动nexus3 ...

  5. 国内 maven 仓库镜像地址收集

    修改配置文件 ~/.m2/settings.xml <?xml version="1.0" encoding="UTF-8"?> <setti ...

  6. Maven-将jar包发布到本地maven仓库与私服

    创建一个项目,并创建 library ,不会参考下面: https://blog.csdn.net/wuqingsen1/article/details/103178567 如果 maven 还没有安 ...

  7. 【Maven学习】Nexus私服代理其他第三方的Maven仓库

    一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...

  8. 如何将本地jar包放入本地maven仓库和远程私服仓库

    1.将本地jar包放入本地仓库.只需执行如下命令即可: mvn install:install-file -Dfile=D:/demo/fiber.jar -DgroupId=com.sure -Da ...

  9. Nexus(maven私服)介绍、安装及使用教程

    1:Nexus(maven私服)作用 是种特殊的Maven仓库一般用于公司,比如三十个员工开发一个项目,需要每个人都联网去下载jar,每个人都很痛苦.此时公司可以搭建一个私服,让其中一人去私服下载ja ...

  10. 使用nexus搭建局域网私服Maven仓库(Windows版)

    认识Maven仓库 一 什么是Maven仓库 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理.Maven仓库是专门用来存放jar ...

最新文章

  1. canvas 轮播图片
  2. 计算机专业人大学排名,计算机专业学校排名哪些大学计算机专业比较好
  3. echarts symbol 回调函数_凹函数和凸函数到底什么样?傻傻分不清楚
  4. C#语法之Linq查询基础一
  5. wav2midi 音乐旋律提取算法 附可执行demo
  6. template里面要做数据渲染,但是数据还没有出来
  7. Transformer and set Trasformer
  8. JS事件的捕获和冒泡阶段
  9. 移动端页面rem+media写法过程
  10. JAVA 异常 throw 与 throws
  11. linux 停止jar 指令,Linux编辑启动、停止与重启springboot jar包脚本实例
  12. Date实战案例:倒计时日历
  13. 使用易宝支付接口实现java网上支付功能。
  14. 华为自带时钟天气下载_华为手机锁屏时钟软件
  15. 翻译: 巴菲特公式:睡觉比醒来更聪明
  16. Push failed Remote: Support for password authentication was removed on August 13, 2021.
  17. 三星三防s8计算机功能在哪里,三星s8三防版怎么样 三防版三星s8配置参数介绍...
  18. Transformer计算量和过程统计
  19. 拼多多订单,商品详情,关键词API接口
  20. vue二维码生成可自定义logo

热门文章

  1. 如何将显示器连接到 Mac?
  2. iOS开发之33 款主宰 2017 iOS 开发的开源库
  3. tf.nn.conv2d。卷积函数
  4. 凹凸实验室:支撑数千万消费者的小程序开发实践
  5. eNSP模拟器拓扑图:浮动路由的实际作用和分析,默认路由的配置,抓包分析
  6. canvas学习(四):高级属性
  7. 跟小静学MVC3[03]--相关语法特性小补习
  8. VINS(二)Feature Detection and Tracking
  9. 自然语言5——初学者书籍
  10. perl Makefile.PL;make;make install 安装时报错