window下Nexus私服高级搭建
项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上
环境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32
一、用admin用户登陆nexus
nexus的下载和安装都很简单
- 1.下载
- http://www.sonatype.org/nexus/go
- 这里我们下载window 环境下的nexus文件
- http://www.sonatype.org/downloads/nexus-2.1.1-bundle.zip
- 2.安装和启动服务
- 下载完成后,在盘符上新建nexus 文件夹,将
- nexus-2.1.1-bundle.zip解压到nexus目录中。
- 3、配置环境变量
- NEXUS_HOME=E:\nexus\nexus-2.1.1
- PATH 添加 %NEXUS_HOME%\bin\jsw\windows-x86-32
- 4、执行nexus 服务安装
- install-nexus.bat 服务安装成功后
- console-nexus.bat 在控制台nexus服务项目
- start-nexus.bat 启动nexus服务
- 5、如果启动报错(错误如下)
- wrapper | The nexus service was launched, but failed to start.
- 关闭window,重新启动
- 6、window 启动后,再次找到nexus服务,启动或者停止,看服务是否正常。
- 7、地址栏上输入
- http://localhost:8081/nexus
- 如果到此处,都一切正常说明,你成功了!
- 默认用户名admin,密码为admin123
nexus的配置需要用admin角色完成,默认的密码是admin123,进入nexus首页之后,点击右上角,进行登录
然后就可以在左边的菜单中进行配置了
二、为nexus配置代理服务器
由于这台机器需要通过代理才能访问外网,所以首先要配置代理服务器,在Administration-->Server中进行配置
配置之后,nexus才能连上central repository,如果私服所在机器可以直接上外网,则可以省略这一步
三、配置repository
在Views/Repositories-->Repositories里进行配置
nexus里可以配置3种类型的仓库,分别是proxy、hosted、group
proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里
group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了
nexus装好之后,已经初始化定义了一些repository,我们熟悉之后,就可以自行删除、新增、编辑
右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还以为是BUG,其实是被浏览器缓存了
四、配置Central Repository的proxy
最关键的一个配置,可能就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的
在安装完nexus之后,这个proxy是预置的,需要做的就是把Download Remote Indexes改为true,这样nexus才会从central repository下载索引,才能在nexus中使用artifact search的功能
网络上有一些其他公开的maven仓库,可以用同样的办法,在nexus中设置proxy,但是并不是所有maven仓库,都提供了nexus index,这种情况下,就无法建立索引了
五、配置hosted repository
一般会配置3个hosted repository,分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版
这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止
六、配置group repository
前面说过,group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址
这里要注意的是,放到左边的仓库,才是会被聚合的仓库。我昨天一直搞错了,把仓库都放到右边,结果group什么都没有聚合到,是一个空的仓库。。。
七、配置用户密码
在Security-->Users中配置,在deployment用户上点击右键,选择Set Password,然后设置一个密码,做这个操作是为了后面提交做准备
八、在用户机器上配置settings.xml
经过前面的7个步骤,nexus就配置好了,接下来需要在每个开发人员的开发机器上进行配置了
配置文件在%USER_HOME%/.m2/settings.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <servers>
- <server>
- <id>nexus-snapshots</id>
- <username>deployment</username>
- <password>deployment</password>
- </server>
- </servers>
- <mirrors>
- <mirror>
- <id>nexus</id>
- <name>internal nexus repository</name>
- <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
- <mirrorOf>central</mirrorOf>
- </mirror>
- </mirrors>
- </settings>
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <servers>
- <server>
- <id>nexus-snapshots</id>
- <username>deployment</username>
- <password>deployment</password>
- </server>
- </servers>
- <mirrors>
- <mirror>
- <id>nexus</id>
- <name>internal nexus repository</name>
- <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
- <mirrorOf>central</mirrorOf>
- </mirror>
- </mirrors>
- </settings>
这里只配置了2个元素<mirrors>和<servers>
首先这里配置了一个id为nexus的镜像仓库,地址是前面配置的public group的URL,然后镜像目标是central
maven里的超级pom,里面配置了这样一段:
- <repositories>
- <repository>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <updatePolicy>never</updatePolicy>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- <repositories>
- <repository>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <name>Central Repository</name>
- <url>http://repo.maven.apache.org/maven2</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <updatePolicy>never</updatePolicy>
- </releases>
- </pluginRepository>
- </pluginRepositories>
因此,当本地的maven项目,找不到需要的构件(包括jar包和插件)的时候,默认会到central里获取
所以我们刚刚配置的镜像仓库,id也是central,这样本地maven项目对central repository的请求,就会转到镜像仓库上,也就是我们设置的nexus私服上
由于我们在项目的pom里,不会再配置其他的<repositories>和<pluginRepositories>元素,所以只要配置一个central的mirror,就足以阻止所有的外网访问。如果pom中还配置了其他的外网仓库,比如jboss repository等,可以把<mirrorOf>改为*
至于<servers>元素,是因为我们把项目内部的构件上传到nexus的仓库中时,nexus会进行权限控制,所以这里需要设置权限相关的信息。注意这里的<id>nexus-snapshots</id>,和后面maven工程里的pom设置是一致的
由于我们这里已经屏蔽了对外网仓库的请求,所以就不需要配置代理服务器了,如果需要配置代理服务器,可以用<proxies>元素
九、配置maven项目的pom文件
下面是简化后的pom文件:
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.huawei.inoc.wfm.task</groupId>
- <artifactId>task-sla</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>task-sla</name>
- <!-- 配置部署的远程仓库 -->
- <distributionManagement>
- <snapshotRepository>
- <id>nexus-snapshots</id>
- <name>nexus distribution snapshot repository</name>
- <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
- </project>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.huawei.inoc.wfm.task</groupId>
- <artifactId>task-sla</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>task-sla</name>
- <!-- 配置部署的远程仓库 -->
- <distributionManagement>
- <snapshotRepository>
- <id>nexus-snapshots</id>
- <name>nexus distribution snapshot repository</name>
- <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
- </project>
这里配置了<distributionManagement>元素,其中的<id>nexus-snapshots</id>,与前面说的settings.xml中的<servers>元素中的配置必须一致
配置这个的目的,是当执行maven deploy时,才知道要将生成的构件部署到哪个远程仓库上,注意这里的URL填的就不是public group的地址:
http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/
而是snapshots的地址:
http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/
但是在nexus中,snapshots也是聚合到public group里的,所以开发人员A提交到snapshots的构件,开发人员B也可以从public group里获取到
十、eclipse中的设置
经过前面的配置,已经可以通过命令行进行maven操作了。不过实际开发中,一般都是使用eclipse的m2e插件,所以还需要对eclipse进行一些额外的配置
在Preferences-->Maven-->User Settings中,点击Update Settings,加载刚才我们对settings.xml的更改
然后在Maven Repositories视图里,可以看到仓库的情况
可以看到,从超级pom继承来的central被置灰了,不可用,后面的mirrored by nexus表示对该仓库的所有请求,都会转到镜像nexus中
十一、nexus的目录结构
nexus会安装在%USER_HOME%/sonatype-work/nexus下,有以下目录
其中的storage目录,就是构件实际存放的地址了
window下Nexus私服高级搭建相关推荐
- maven nexus 私服的搭建学习
之前对maven有过初步的了解与认识,自己也创建过项目使用其来管理,但都是非常粗浅的操作,今天在高人的指点下,也学着在自己的电脑上搭建一个maven私服,虽然技术难度也不高,但为了更深层次的提高,这些 ...
- window下的Django环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 1. 下载并安装Python2.7.5 安装到E:\Python27 2.将Python目录加入环境变量path中 打开Win ...
- 02-Maven高级-分模块开发、依赖传递、聚合、继承(SpringBoot的部分底层原理)、多模块开发(环境切换)、Nexus私服搭建与使用
文章目录 学习目标 一.分模块开发与设计 1. 分模块开发的意义 问题导入 模块拆分原则 2. 分模块开发(模块拆分) 问题导入 2.1 创建Maven模块 2.2 书写模块代码 2.3 通过mave ...
- Maven之Nexus局域网私服的搭建以及上传下载的测试
Maven之Nexus局域网私服的搭建 公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的maven远程仓库,每个员工的电脑上安装maven软件并且连接私服服务器,员工将 ...
- 史上最详细Maven笔记以及搭建Nexus私服
1.配置环境变量 1.1.方式一 M2_HOME 1.2.方式二 1.3. 查看是否配置成功 mvn -version 2.配置maven远程仓库地址 2.1.本地maven加载顺序 查找远程地址:m ...
- Ubuntu16.04 搭建nexus 私服 学习步骤以及安装maven和git
1.下载安装maven wget https://www-us.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin. ...
- Linux_Centos中搭建nexus私服
1.在Linux下搭建Nexus私服 1).下载并且解压 下载 nexus-2.11.2-03-bundle.zip unzip nexus-2.11.2-03-bundle.z ...
- Maven搭建Nexus私服
私服的介绍 1 什么是私服 私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用. 在企业开发中,私服的建设是有必要的,其好处如下: 1.1 节省资金.外网带 ...
- windows下使用nexus3.x搭建maven私服
写在前面 本文描述了在windows下如何使用nexus3.x搭建maven私服,文章可能还有很多不足,请大家谅解,欢迎大佬提意见. 本文使用到的东西 nexus win10 文章目录 写在前面 本文 ...
最新文章
- 1.1 为什么选择序列模型-深度学习第五课《序列模型》-Stanford吴恩达教授
- fetch 自动加cookie_如何在shell中动态获取chrome浏览器的cookie信息
- Redhat 或 CentOS 发行版本号
- 一致吗 驱动_iPhone 12无线充电真的香吗?
- 【转】WCF Data Service 使用小结 (一)—— 了解OData协议
- 设计一个安全对外的API接口,需要考虑哪些方面?
- 《工业控制网络安全技术与实践》一2.2 分布式控制系统
- mac编译安装apache+php+mysql开发环境
- 赛锐信息:FlexBroswer,一劳永逸解决业务系统Flash问题
- Linux上配置jupyter的步骤及与本地映射
- 调用未知DLL中的导出函数[转]
- C/C++[指针/引用]
- 高等代数期末考试题库及答案_复旦大学2019--2020学年第一学期19级高等代数I期末考试第六大题...
- 0X0000006B导致电脑蓝屏解决
- 深度学习环境搭建:linux下 Ubuntu16.04+cuda8.0+cudnn+anaconda+tensorflow并配置远程访问jupyter notebook
- Counting Bloom Filter
- 「镁客·请讲」移康智能朱鹏程:做产品就要直击痛点,多余的功能只会是噱头...
- java计算机毕业设计体育用品购物系统源程序+mysql+系统+lw文档+远程调试
- 大数据Hadoop课程进度
- [main] 32-bit servers don't have journaling enabled by default. Please use --journal if you want dur
热门文章
- 如何利用excel和python构建拟合曲线预测可转债股票价格?
- PHP fpdi合并多个PDF文件,取多个PDF特定页数合并以及导出
- 六十甲子日吉凶时辰对照表
- 安卓8.0-MT6763平台 st7701s-MIPI转RGB屏调试
- HTTP(一)HTTP响应的过程
- 榕树贷款利用AI人工智能技术发送非常迅速(榕树贷款)
- 奇瑞新能源掌门人鲍思语:未来将迈进大车市场
- 计算机毕业设计SSMjava高校社团管理系统【附源码数据库】
- 2021年三季度中国家居用品行业A股上市企业营收排行榜:欧派家居、顾家家居排名前2位,且近五年第三季度的净利润均逐年递增(附热榜TOP61详单)
- 手机互联网的一点看法