搭建私有maven库发布及使用流程
一:背景
Apache Maven是当Java技术栈前最流行的项目管理工具,它提供了一系列方便快捷的命令帮助程序员们进行Java工程的开发工作。Maven服务器位于美国,由于出国带宽和众多因素,在国内直接使用Maven的体验并不好。同时,国内还有很多公司的程序员开发机器无法直接连接互联网,鉴于这种情况,在公司区域网架设一部Maven私服能大大提高开发效率。
Apache Maven的私服有很多开源提供商,目前用的最多的就是Sonatype Nexus Repository,以下将简述怎么搭建私有maven库发布及使用流程
二:安装nexus
1、下载地址:http://www.sonatype.com/download-oss-sonatype
2、我们下载nexus-3.0.1-01-win64.exe后双击安装即可,安装完成后默认开放8081端口,当然也可以选gz,解压安装
3: 安装成功后有两个默认账号admin、anonymous,其中admin具有全部权限默认密码admin123;anonymous作为匿名用户,只具有查看权限。
4:使用admin账户登录,可新建
三:环境配置
1:idea环境下,如果使用内置maven,需要手动生成settings.xml,并关联。
操作如下
生成settings.xml 右键pom.xml-Maven-create settings.xml
File-settings-Maven关联配置
勾选 User settings file Override
勾选 Local repository Override
Eclipse环境,生成的settings文件路径C:\Users\{用户}\.m2\settings.xml
四:发布
4.1:需要使用有管理权限的用户登录
4.2:创建Repository
4.2.1、create Repository
4.2.2、maven2(hosted)
4.2.3、insert repository name
4.2.4、allow redepoly
4.2.5、create(保存)
4.3:编辑本地maven配置文件(<servers>标签下增加如下内容,username及password填上自己的用户名密码即可)
```xml
<server>
<id>nexus-snapshot</id>
<username>{username}</username>
<password>{password}</password>
</server>
<server>
<id>nexus-release</id>
<username>{username}</username>
<password>{password}</password>
</server>
```
4.4:在待deploy项目中的pom.xml文件中增加如下内容,host及port替换为仓库地址和端口(把项目打包发布到私有maven仓库)
```xml
<distributionManagement>
<repository>
<id>nexus-release</id>
<name>Nexus Release Repository</name>
<url>http://{host}:{port}/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshot</id>
<name>Nexus snapshots Repository</name>
<url>http://{host}:{port}/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
```
4.5:使用(项目中引入jar)
在项目pom.xml文件中添加repository信息
```xml
<repositories>
<repository>
<id>Nexus</id>
<url>http://{host}:{port}/repository/{xxxx}/</url>
</repository>
</repositories>
```
然后就可以像引用其他公共仓库中依赖一样引用我们自己发布的依赖了,例如:
```xml
<dependencies>
<dependency>
<groupId>com.huilianjk</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
```
4.6:在过程中遇到的问题
1:Return code is: 401, ReasonPhrase: Unauthorized 检查 pom中distributionManagement下id必须和settings.xml配置中的service下id一致
2:Return code is: 400 检查发布的Version 是否和上传的仓库的Version policy是否一致
总结:
1:如果没有.m2\settings.xml,新建一个,并关联项目
2:修改settings.xml,最终如下
```xml
<!-- 配置Maven服务器的账号信息,自动化部署的时候需要用到 -->
<server>
<id>nexus-snapshot</id>
<username>用户名</username>
<password>密码</password>
</server>
<server>
<id>nexus-release</id>
<username>用户名</username>
<password>密码</password>
</server>
<!-- 使用Mirror配置节可以强制所有包请求都会被转向内网Nexus服务器的地址 -->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://{host}:{port}/repository/maven-public/</url>
</mirror>
</mirrors>
```
3:deploy项目需要修改pom.xml
```xml
<distributionManagement>
<repository>
<!--需要和 settings中service的id一致-->
<id>nexus-release</id>
<name>Nexus Release Repository</name>
<url>http://{host}:{port}/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<!--需要和 settings中service的id一致-->
<id>nexus-snapshot</id>
<name>Nexus snapshots Repository</name>
<url>http://{host}:{port}/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
```
4:使用
```xml
<repositories>
<repository>
<id>nexus</id>
<url>http://{host}:{port}/repository/{xxxx}/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.huilianjk</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
```
搭建私有maven库发布及使用流程的更多相关文章
- 私有maven库发布及使用流程
## 私有maven库发布流程 ### 环境配置 - idea环境下,如果使用内置maven,需要手动生成settings.xml,并关联. - 操作如下 - 生成settings.xml 右键pom ...
- 创建私有maven库
在公司搭建私有maven库,我为了在本机做测试,我选择Sonatype nexus oss,在docker里面安装 1.Mac上安装docker 下载地址:https://github.com/boo ...
- Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库
前言: 公司的业务组件化推进的已经差不多三四个月的时间了,各个业务组件之间的解耦工作已经基本完成,各个业务组件以module的形式存在项目中,然后项目依赖本地的module,多少有点不太利于项目的并行 ...
- 使用cnpm搭建私有NPM仓库 发布npm包
关于如何使用cnpm搭建私有的npm仓库看这里→ http://blog.fens.me/nodejs-cnpm-npm/ 我本人还没有机会真正实践操作过,公司的npm仓库是我老大搭建的,我这里仅仅记 ...
- 搭建本地maven库(nexus服务器)
第一步,下载https://www.sonatype.com/download-oss-sonatype 别下3.x版本,下2.x版本 第二步,解压,在bin目录下执行cmd命令,nexus inst ...
- linux下安装nexus repository及Intellij Idea集成私有maven
前段日子公司搞java项目,使用nexus repository搭建了私有maven库,现在把原来的私有nuget也迁到nexus repository上了,下面介绍下搭建流程: https://he ...
- 私有Maven仓库安装和使用
安装 这里选择安装的是windows平台,linux安装类似,下载可能要梯子 官网下载页 https://help.sonatype.com/repomanager2/download 下载链接 ht ...
- 如何在K8S中优雅的使用私有镜像库 (Docker版)
前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...
- 【图文并茂】 做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧
大家好,我是冰河~~ 最近不少小伙伴想在自己公司的内网搭建一套Maven私服环境,可自己搭建的过程中,或多过少的总会出现一些问题,问我可不可以出一篇如何搭建Maven私服的文章.这不,就有了这篇文章嘛 ...
随机推荐
- C语言实现通用链表初步(三)----单元测试
前两节,我们已经完成了链表的一些操作,快来测试一下吧. 这里使用的单元测试工具名字叫"check". START_TEST(my_slist_1) { struct student ...
- 微信小程序里使用 Redux 状态管理
微信小程序里使用 Redux 状态管理 前言 前阵子一直在做小程序开发,采用的是官方给的框架 wepy , 如果还不了解的同学可以去他的官网查阅相关资料学习:不得不说的是,这个框架确相比于传统小程序开 ...
- Java并发包concurrent类简析
1.ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap的实现. 1)添加 put(Object key , Object value) Concurren ...
- Java之通过反射机制选择servlet中的对应的方法
此方法用于在对Javaee开发中的通过对应的名称而选择servlet中的对应的方法 注:主要代码如下 protected void doGet(HttpServletRequest req, Http ...
- springboot2.x如何配置全局自定义异常
为什么要捕获异常? 我们开发中,经常运行时,代码会报错,这时候我们有可能抛出异常,而不是用try..catch来解决.而且现在前后端分离,如果不捕获异常的话,前端那边的人估计会被报的错搞得焦头烂额的. ...
- guava的重试机制guava-retrying使用
1,添加maven依赖 <dependency> <groupId>com.github.rholder</groupId> <artifactId>g ...
- Gremlin--一种支持对图表操作的语言
Gremlin 是操作图表的一个非常有用的图灵完备的编程语言.它是一种Java DSL语言,对图表进行查询.分析和操作时使用了大量的XPath. Gremlin可用于创建多关系图表.因为图表.顶点和边 ...
- Selenium 元素查找
1.尽量使用ID或者name去定位元素,如果这个元素没有ID或者Name,那么就是用它最近的父节点的ID或者Name去定位. 2.写自动化脚本不是一个人的事情,是一个团队的事情,合作能更好,更轻松得完 ...
- Prestashop-1.6.1.6-zh_CN (Openlogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: prestashop1.6.1.6 commercial content management ecommerce open-source 简体中文 ...
- Ajax使用 初始化数据 + mvc
2017-3-16 mvc+jquery+easyUI做项目 <input type="text" id="txtSTQty" name="tx ...