|作者:RexFang
|出处:http://www.cnblogs.com/rexfang/
|关于作者:Java 程序员一枚
|版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:fangruitao.work@foxmail.com
Maven 是日常开发过程中,都会接触到的项目管理工具。Maven 可以将开发人员从繁杂的文档管理、项目打包等工作中解放出来,把更多的精力放在业务开发上。Maven 带来的便利这里就不多说了,但是只是单单使用 Maven,有时候也会遇到依赖文件无法下载的情况,原因有很多,有可能是中央仓库的问题,也有可能是网络问题等等;与此同时,有一部分的第三方的类库是没有发布到 Maven 上的,因此并没有 Maven 相关的依赖信息,这就给我们使用 Maven 构建项目带来了一定的麻烦。例如以下的这个例子,就是经常会遇到的问题。
在最近的一个测试项目中,由于个人比较喜欢有条不紊,所以一直是使用 Maven 作为项目构建的工具,但是在构建 Hibernate 相关依赖的过程中,发现有一部分相关的 Jar 无法正常下载,中间也换过各种软件仓库,但是最后都是无法正常构建项目。
1
2
3
4
5
6
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-distribution</artifactId>
<version>
`3.6.
0`.Beta2</version>
<type>pom</type>
</dependency>
最后,实在没辙了,想起了要搭建一个私有仓库。本文主要介绍 Nexus 私有仓库的搭建过程,以及 Nexus 与 Maven 的整合。本文使用的 Nexus 版本为 Nexus Repository Manager OSS 2.14.5-02 ,之所以不使用最新的 Nexus Repository Manager OSS 3 是因为个人感觉版本3还没有版本2友好,特别是在图形管理界面的操作上。
首先需要到官网上下载 Nexus Repository Manager OSS 2.14.5-02 的安装包,下载地址为:https://www.sonatype.com/download-oss-sonatype,解压后的目录结构:
在命令行窗口,进入 \nexus-2.14.5-02-bundle\nexus-2.14.5-02\bin 目录,输入 nexus install 命令,安装 Nexus(需要等待一小段时间)。安装成功后,进入服务管理界面,找到一个名为 nexus 的服务,启动该服务,服务启动完成后,打开浏览器,输入 http://localhost:8081/nexus ,如果可以看到欢迎界面,说明 Nexus 安装成功了。
点击右上角的登录按钮,输入管理员账号和密码(默认账号:admin,密码:admin123)登录。
登录成功后,选择左边 Views/Repositories 菜单下的 Repositories,可以看到一些预设的仓库,我们会用到的一般只有 Public Repositories 和 3rd party , Public Repositories 为公共仓库,3rd party 为第三方仓库,可以上传第三方的 Jar (当然也可以是自己封装的 Jar)。
Nexus 安装成功后,接下来需要修改 Maven 的配置文件(settings.xml),整合 Nexus。
找到 <servers> 标签,添加 Nexus 默认认证信息:
1
2
3
4
5
6
7
8
9
10
<server>
<id>my-nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>my-nexus-snapshot</id>
<username>admin</username>
<password>admin123</password>
</server>
找到 <mirrors> 标签,添加镜像:
1
2
3
4
5
6
<mirror>
<!--This sends everything
else
to /
`public
-->`
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http:
`//localhost:8081/nexus/content/groups/public/</url>`
</mirror>
找到 <profiles> 标签,添加仓库信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<profile>
<id>nexus</id>
<!--Enable snapshots
for
the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<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>
激活仓库:
1
2
3
4
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
配置完成后保存,并重启 nexus 服务。
重启 nexus 服务 完成后,在命令行窗口进入一个使用 Maven 构建的项目,输入 mvn package clean 命令,清理完成后,登录 nexus 的 admin 账号可以看到 Public Repositories 下出现了一些 Jar 包。
此时刷新之前报错的项目,发现 Maven 依赖仍然有问题,无法正常下载 jboss 的一个 Jar 包。这个时候我们可以利用我们刚刚搭建的 Nexus 私有仓库,在网上自己下载缺失的 Jar 包,然后以第三方 Jar 的形式上传到私有仓库,依赖信息可以设置跟中央仓库一样。例如添加 jbosscache-core-3.2.1.GA.jar ,在外网上的依赖为:
1
2
3
4
5
<dependency>
<groupId>org.jboss.cache</groupId>
<artifactId>jbosscache-core</artifactId>
<version>
`3.2.
1`.GA</version>
</dependency>
选择 3rd party,把我们自己下载的 jbosscache-core-3.2.1.GA.jar 上传到 3rd party。在 Artifact Upload 选择卡页面,点击 Select Artifact(s) to Upload 按钮,选择需要上传的 Jar 包,选择完成后点击 Add Artifact 按钮。然后设置 Jar 的 Maven 依赖信息(后续引用 Jar 包需要用到),其中 Maven 依赖的相关信息可以设置成和中央仓库一致,如下图:
Jar 包上传成功后,切换到 Browse Index 选项卡页面,点击刷新按钮,可以看到我们刚刚上传的 Jar 包,选中 Jar 包我们可以在右边看到 Jar 包对应的 Maven 依赖信息,可以用于项目的构建。
进入本地仓库删除 \.m2\org\jboss\cache\jbosscache-core\3.2.1.GA 目录下的所有文件(重要,否则会构建失败),此时,再次回到刚刚构建失败的项目,刷新 Maven,可以看到项目已经可以正常构建了。
如果本地安装了 Maven,可以在 Maven 的安装目录找到一些常用的软件仓库,位置为:${MAVEN\_HOME}\\lib\\maven-model-builder-3.3.3.jar 下 \\org\\apache\\maven\\model\\pom-4.0.0.xml ,其中 ${MAVEN_HOME} 为 Maven 的安装目录,用编辑器打开 pom-4.0.0.xml 可以看到很多预设的软件仓库。
此处,也提供一些常用的软件仓库:
http://maven.aliyun.com/nexus/content/groups/public(阿里云,推荐)
这里,也提供一些 Maven 的参考资料:
http://www.codeweblog.com/category/maven-gradle/
Original url: Access
Created at: 2019-02-27 16:12:12
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论