Maven 使用 Nexus 内部库 代理
反正任由总理怎么强调,在中国的当前的网络环境下,中央库的访问速度总是令人心碎。建一个nexus内部库可以建立缓存,只要有人通过它下载了相关的maven依赖,那么别人需要时可以马上从本地网络的服务器上返回而不需要在从中央库去下了。内部也可以将jar发布到本地服务器上便于队友共享使用。有时候队友只是想直接用你编译好的包,而不想花时间去配什么本地环境。所以这比单单代码库又方便快捷了许多。
1. nexus服务器
基本开箱可用,改一下管理员密码即可。已经预先为用户把中央仓库以代理的方式加进来了,改一下打开下载索引的配置即可。不过因为糟糕的网络环境,这通常是成功不了的。
2. maven的settings.xml文件
可以从maven安装目录里复制一份到用户目录下得.m2文件夹下作为用户settings(确保eclipse中的maven插件中settings文件路径正确),也可以直接在里面改作为global settings
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies> <mirrors>
<mirror>
<id>local-nexus</id>
<mirrorOf>*</mirrorOf>
<name>database lab local maven repo</name>
<url>http://10.214.208.144:8080/nexus/content/groups/public/</url>
</mirror>
</mirrors> <profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>central</id>
<name>local-maven-main-repository</name>
<url>http://10.214.208.144:8080/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>local-maven-plugin-repository</name>
<url>http://10.214.208.144:8080/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles> <activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
</settings>
profile中的的repository最好把pluginRepositories也写上。不过感觉只配个mirror也可以了,不用配profiles和activeProfiles。不过可能没有遇到特殊的情况,因为profile里把releases和snapshots两选项打开了,真是搞不明白,配置够烦得。
3. eclipse
新建一个maven项目,然后如果eclipse有对pom.xml打了个叉,提示有什么依赖包下载不到什么的,先不用管它。
到项目所在的目录执行:
mvn clean
mvn package
第一个先做个清理,第二个进行一次打包,相应的maven需要的插件就会去下载了,一般成功的话会显示BUILD SUCCESS。然后多刷新eclipse的pom.xml文件就可以了,或者关闭eclipse再打开,那些错误应该就没了。
一些包无法下载
1. nexus刚刚运行的时候,有些包可能无法下载,在管理界面里可以对比browse index和browse remote里面的项,有些只有在remote里有本地index里还没有。
另外实在碰到一些奇葩包无法下载,可以把本地maven库缓存里的包全删了(.m2/repository),然后mvn clean再来就行了。最好是等服务器搭好,过个一天再尝试。可以把repo.spring.io这个仓库加进来,里面有很多东西。
2. 在库的配置选项Routing页中把Discovery关闭(去掉选择)
默认情况下是打开的,但因为好像有的库中会有一个prefix文件,
点可以查看prefix文件内容:
## repository-prefixes/2.0
#
# Prefix file generated by Sonatype Nexus
# Do not edit, changes will be overwritten!
/archetype-catalog.xml.sha1
/archetype-catalog.xml.md5
/monetdb/monetdb-jdbc
/archetype-catalog.xml
/pentaho/json
/org/json
打开discovery后不在prefix里的包好像都下载不到,在浏览器中直接输入对应地址的话会出现类似以下的错误:
404 - ItemNotFoundException
Request is marked as local-only, remote access not allowed from M2Repository(id=pentaho-snapshot)
org.sonatype.nexus.proxy.ItemNotFoundException: Request is marked as local-only, remote access not allowed from M2Repository(id=pentaho-snapshot)
把discovery禁用的话,就不会按照prefix文件的限定,可以下载任何库里能看到的包
Maven 使用 Nexus 内部库 代理的更多相关文章
- Maven 如何发布 jar 包到 Nexus 私库
Nexus2可以通过管理界面来上传jar包到私库中,而最新的Nexus3却找不到了上传界面,只能通过以下方式来发布到私库. 发布第三方jar包 这种情况是maven远程仓库没有,本地有的第三方jar包 ...
- Maven如何发布jar包到Nexus私库
Nexus2可以通过管理界面来上传jar包到私库中,而最新的Nexus3却找不到了上传界面,只能通过以下方式来发布到私库. 发布第三方jar包 这种情况是maven远程仓库没有,本地有的第三方jar包 ...
- Maven仓库管理-Nexus
Maven仓库管理-Nexus @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style& ...
- Ubuntu server下搭建Maven私服Nexus
Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...
- Maven与Nexus OSS
Maven 是一个项目管理和构建自动化工具,是Apache Fundation下的一个Java项目.常用于Java项目中依赖管理 下载直接去官网 安装Maven 已经编译的二进制包 直接解压到安装目录 ...
- Maven私服Nexus的搭建
# Maven私服Nexus的搭建 ## 私服存在的合理性 Maven中的依赖是从服务器仓库中下载的,Maven的仓库只有两大类: - 1) 本地仓库 - 2) 远程仓库,其中在远程仓库中又分成了3种 ...
- Maven与nexus关系
一.了解Maven,Maven用来干什么呢 1. 优秀的构建工具 通过简单的命令,能够完成清理.编译.测试.打包.部署等一系列过程.同时,不得不提的是,Maven是跨平台的,无论是在Windows.还 ...
- [转]Maven与nexus关系
开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,当时很是困惑,nexus是什么呢,为什么它总是和maven一起被提到呢? 我们一步一步来了解吧. 一.了解Mav ...
- [转]Maven与nexus
开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,当时很是困惑,nexus是什么呢,为什么它总是和maven一起被提到呢? 我们一步一步来了解吧. 一.了解Mav ...
随机推荐
- 七,mysql优化——表的垂直划分和水平划分
1,表的水平划分 如果一个表的记录数太多,比如成千上万条,而且需要经常检索,那么我们有必要化整为零.如果我拆成100个表,那么每个表只有10万条记录.当然需要数据在逻辑上可以划分.一个好的划分依据,有 ...
- 内核漏洞学习—熟悉HEVD
一直以来内核漏洞安全给很多人的印象就是:难,枯燥.但是内核安全是否掌握是衡量一个系统安全工程师水平的标准之一,也是安全从业人员都应该掌握的基本功.本文通过详细的实例带领读者走进内核安全的大门.难度系数 ...
- Flask从入门到精通之模型定义
模型这个术语表示程序使用的持久化实体.在ORM 中,模型一般是一个Python 类,类中的属性对应数据库表中的列. Flask-SQLAlchemy 创建的数据库实例为模型提供了一个基类以及一系列辅助 ...
- webpack快速入门——实战技巧:优雅打包第三方类库
下面说两种方法: 一. 1.引入jQuery,首先安装: cnpm install --save jquery 2.安装好后,在我们的entry.js中引入: import $ from 'jquer ...
- webpack快速入门——实战技巧:webpack优化黑技能
1.抽离jquery,vue(多个第三方类库抽离) 修改入口文件(webpack.config.js中) entry: { entry: './src/entry.js', jquery:'jquer ...
- [SqlServer] Error: 15023
Use DataBaseName go sp_change_users_login 'update_one', 'UserName', 'UserName' 恢复数据库后,添加用户,报错号15023 ...
- python学习笔记05-列表
Python3已经不区分整型和长整型 列表: 查 用切片查 [n:n:n] A[1:2] 只能取出一个数 顾头不顾尾 存在步长 可以按步长1取 也可以按设置其他步长取 若要逆序取数 步长 ...
- php7 引用成为一种类型
<?php $a= ref_count= $b=$a; is_ref= ref_count= $c=&$a; is_ref= ref_count 即a c 共用一个zval, b单独用一 ...
- Ubuntu 连接手机 不识别设备 -- 解决办法
1.usb线连接手机,输入命令 $ lsusb Bus 004 Device 002: ID 8087:8000 Intel Corp. Bus 004 Device 001: ID 1d6b:000 ...
- 杂记---Mongo的Invalid BSON field name $gte
1.前言 这几天使用mongo的时候遇到了一个异常:Invalid BSON field name $gte,该问题可能会有很多小伙伴会遇到,因此记录一下解决过程.起因是用JAVA翻译一个其他语言写的 ...