文档章节

使用nexus搭建maven私有仓库服务器

阿信sxq
 阿信sxq
发布于 2014/11/12 12:06
字数 2163
阅读 1106
收藏 15
点赞 2
评论 10

        用过maven的人都知道,maven通过pom.xml文件的配置,会从中央服务器(https://repo1.maven.org/maven2/)下载依赖构件和相关需要的插件,如果是一个人使用没有问题,但是如果一个公司使用maven的人很多,那么对公司的出口网络会造成一定的压力,而且如果一个IP下载的量很大的话,中央服务器可能会暂时屏蔽该IP的;同时公司内部很有可能会需要私有构件的分享,传到中央服务器会有一些问题。还有很多直接使用中央服务器的问题或不足。maven官方建议组织内部应该搭建自己的maven代理服务器,进行缓存以减轻对中央服务器的压力。

        maven的中央服务器是由一家商业公司进行搭建、维护和支持的,使用的软件名叫nexus,同时该公司也将搭建服务器的软件进行了公开,下面就一步一步的开始使用nexus搭建自己的maven服务器之旅吧。

1、下载相关软件

        JDK(http://www.oracle.com/technetwork/java/javase/downloads/index.html)

        Tomcat(http://tomcat.apache.org/)

        nexus(http://www.sonatype.org/nexus/archived/)

        maven(http://maven.apache.org/)

        相关软件选择和自己系统对应的版本就行了,记住nexus选择下载相关版本里面的war版,独立安装运行的版本试过之后发现好像有一些问题。

2、配置准备环境

    2.1安装JDK

        将下载的软件安装程序按照一般的软件安装方法安装就行。

        安装之后配置环境变量(windows在系统属性里面有一个“环境变量”,linux修改文件"/etc/profile"),需要添加一个变量名称为“JAVA_HOME”变量值就是jdk的一级目录,然后再在PATH变量里面添加JAVA_HOME/bin的变量值。

        配置好之后linux需要重新加载配置文件使之生效

source /etc/profile

        windows需要重新打开一个cmd窗口。

        检验方法为运行命令

java -version
javac -version

        有关于版本的输出即可。

2.2安装tomcat

        将下载的tomcat解压到自己喜欢的地方(路径最好不要出现空格)即可。

        修改tomcat/conf/server.xml文件,找到

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

        修改为

<Connector URIEncoding="UTF-8" port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

        当然具体的端口可以根据自己的喜好或者安排指定,这个在后面使用的时候对应着修改就行。

        回到tomcat根目录,运行命令

bin/startup.sh

        等一会之后,通过浏览器访问对应主机地址和端口号,出现tomcat的欢迎界面即为配置成功,在验证成功之后需要将tomcat停止,使用命令

bin/shutdown.sh

        然后删除tomcat/webapps下的所有内容。

2.3安装nexus

        将下载好的nexus-<version>.war放置到tomcat/webapps下面,根据需要可以修改名字,但请保留.war的文件名结尾,如果需要直接输入IP和端口就可以访问,请修改为ROOT.war,如要修改为使用“IP:端口/xxx”的方式访问,请修改为xxx.war,只有ROOT比较特殊。

        在放置好了之后就是启动tomcat,然后从浏览器里面根据自己设置的路径访问,看有没有内容了,有内容之后就是对应的配置了。

3、配置nexus

        使用war方式安装搭建的nexus服务器在服务器上的缓存目录会产生在用户目录下的sonatype-work文件夹,所有要是钱配置好相关的写权限。

3.1配置仓库代理

        打开界面,会出现如下的界面


        在界面的右上角有一个“Login”点击会出现输入用户名和密码的弹出框,默认的管理员用户名和密码为(用户名:admin,密码:admin123),在登录之后左边菜单会刷新,多出几个菜单项:


        点击打红框的菜单,会在中介出现操作框:

        单击选中仓库,会在下面出现对应的配置修改操作,将仓库的“Configuration->Download Remote Indexes”设置为true:

        这个时候里可以使用还有一步。

    3.2将所有的仓库归为一个进行对外(公司内部)服务

        选中一个名叫“Public Repositories”的仓库,在配置里面将他的右边的仓库移动到左边去,使之生效。

        在仓库列表的右边是对影仓库在本地缓存的浏览地址


        我们可以单击通过浏览器进行浏览查看本地的缓存库,当然在未使用时应该是空的,随着使用就会慢慢多起来的了。这里需要记住的是“Public Repositories”的地址,这个需要在后面配置maven的时候要使用。

4、配置用户maven使用本地代理服务器

        将下载的maven进行解压,进入maven/conf,打开settings.xml,可以看到里面有很多配置项项的例子,但是都是注释了的,我们需要修改这些配置来启用本地的代理服务器,否则它会依照默认从中央服务器下载所需要的文件。

        参考开源中国的maven服务的帮助页面(http://maven.oschina.net/help.html)说明,

        首先在<mirrors></mirrors>之间插入

        <mirror>
            <id>nexus-197</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus 197</name>
            <url>http://192.168.1.197:8081/content/groups/public/</url>
        </mirror>

        当然这个具体的地址需要根据你具体的情况修改了,下面同,就不再说明了。

        在<profiles></profiles>之间插入

        <profile>
            <id>jdk-1.4</id>
            <activation>
                <jdk>1.4</jdk>
            </activation>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>local private nexus</name>
                    <url>http://192.168.1.197:8081/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>local private nexus</name>
                    <url>http://192.168.1.197:8081/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

        至此maven已经是从我们搭建的代理去下载所需文件了,可以试验一下。

5、发布私有构件

    5.1配置发布者用户

        在nexus左边的菜单列表里,找到"Security->Users"单击,在中间出现对用户的管理界面,

        在“deployment”上面右键出现弹出框,设置一个密码就行了

    5.2配置“Releases”仓库

        在仓库列表里面选择名为“Releases”仓库,下方配置处,根据需要进行配置。

        别忘了把这个仓库加入到“Public Repositories”中

    5.3配置本地maven

        在本地的maven配置文件(maven/conf/settings.xml)里面在<servers></servers>之间插入

        <server>
            <id>nexus-197</id>
            <username>deployment</username>
            <password>deploy</password>
        </server>

        这里的id需要记住,在以后pom.xml中需要和这个对应

    5.4配置pom.xml进行发布

        在pom.xml中添加一个<profiles>节点并在里面配置<profile>配置发布相关的配置

        <profiles>
            <profile>
                <id>deploy197</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <version>${version.source-plugin}</version>
                            <executions>
                                <execution>
                                    <id>attach-sources</id>
                                    <goals>
                                        <goal>jar-no-fork</goal>
                                    </goals>
                                </execution>
                            </executions>
                            <configuration>
                                <attach>true</attach>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>${version.javadoc-plugin}</version>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>${version.gpg-plugin}</version>
                            <executions>
                                <execution>
                                    <phase>install</phase>
                                    <goals>
                                        <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
                <distributionManagement>
                    <repository>
                        <id>nexus-197</id>
                        <url>http://192.168.1.197:8081/content/repositories/releases</url>
                    </repository>
                </distributionManagement>
            </profile>
        </profiles>

        这里的

                <distributionManagement>
                    <repository>
                        <id>nexus-197</id>
                        <url>http://192.168.1.197:8081/content/repositories/releases</url>
                    </repository>
                </distributionManagement>

        的id要是在settings.xml里面配置的id,url要是“Releases”仓库的地址,

        profile的id要记好,稍后进行发布的时候需要使用。

    5.5本地发布

        测试好之后,既可以进行发布了,由于是本地发布,所以需要使用配置了发布到本地仓库的profile的id,运行命令

mvn clean deploy -P <id>

    5.6说明

        本地发布不是必须要使用“Releases”仓库,是要类型为”host“的就行,但是推荐使用这个仓库,便于区分。

6、上传构件

        有时候需要将他人发布的库或者其他上传到maven中进行使用,通过web界面上传方式是最好的方法了(也可以通过命令行)。

        点击仓库列表的“3rd party”仓库,在下方操作面板的右边有一个上传标签,选择、配置好相关构件信息,进行上传



© 著作权归作者所有

共有 人打赏支持
阿信sxq

阿信sxq

粉丝 213
博文 80
码字总数 70640
作品 1
成都
后端工程师
加载中

评论(10)

timlcy
timlcy

引用来自“阿信sxq”的评论

引用来自“timlcy”的评论

怎么没有nexus的war包下载啊

原来有,后来官方就从网页移除了,不过在官方的仓库里面还是找得到的,怎么找就要看你了
现在找到了
阿信sxq
阿信sxq

引用来自“timlcy”的评论

怎么没有nexus的war包下载啊

原来有,后来官方就从网页移除了,不过在官方的仓库里面还是找得到的,怎么找就要看你了
timlcy
timlcy
怎么没有nexus的war包下载啊
Annie_泡泡
Annie_泡泡

引用来自“阿信sxq”的评论

引用来自“Annie_泡泡”的评论

我有个疑问,为什么安装eclipse 和maven 的时候,你更改的都是用户变量啊,百度上更改的怎么是系统变量啊[32][32]
就效果而言都差不多,但是更改用户变量可以避免和其他用户设置的冲突

这样子的,谢谢你的回答,你这么好啊,以后多发点那什么怎么安装配置的哈,粉丝在这谢谢了,哈哈
阿信sxq
阿信sxq

引用来自“Annie_泡泡”的评论

我有个疑问,为什么安装eclipse 和maven 的时候,你更改的都是用户变量啊,百度上更改的怎么是系统变量啊[32][32]
就效果而言都差不多,但是更改用户变量可以避免和其他用户设置的冲突
Annie_泡泡
Annie_泡泡
我有个疑问,为什么安装eclipse 和maven 的时候,你更改的都是用户变量啊,百度上更改的怎么是系统变量啊[32][32]
阿信sxq
阿信sxq

引用来自“Annie_泡泡”的评论

能不能把tomact 的详细安装也贡献出来:stuck_out_tongue_closed_eyes::stuck_out_tongue_closed_eyes:,为什么我执行根目录直接一大串代码啊,上帝啊
tomcat的安装就和平时我们安装一样啊,没有区别,nexus的war版就和一般的web项目没有区别
Annie_泡泡
Annie_泡泡
能不能把tomact 的详细安装也贡献出来:stuck_out_tongue_closed_eyes::stuck_out_tongue_closed_eyes:,为什么我执行根目录直接一大串代码啊,上帝啊
阿信sxq
阿信sxq

引用来自“文浩”的评论

我们公司有两个私有仓库,如何进行合并啊,比如都有版本发布到各自的私有仓库里面,合并的话如何迁移。
没做过类似操作,我也只是简单使用初级功能
文浩
文浩
我们公司有两个私有仓库,如何进行合并啊,比如都有版本发布到各自的私有仓库里面,合并的话如何迁移。
Maven私有库Nexus的安装和使用

Maven私有库Nexus的安装和使用 曾静的技术博客2017-07-2141 阅读 Mavennexus安装 在进行Java开发的时候,通常会使用 Maven 进行第三方库的管理,类似于iOS中的Cocoapods。我们在使用Cocoapo...

曾静的技术博客 ⋅ 2017/07/21 ⋅ 0

Docker学习之搭建私有镜像仓库

过节之前来一发,又是许久没整理笔记了,今天跟大家聊聊Docker如何搭建私有仓库的几种方式。首先我们来回顾一下之前讲到的Doker 平台的基本构成。 Doker 平台的基本构成 Docker 平台基本上由...

小柒2012 ⋅ 04/16 ⋅ 0

nexus搭建maven私有服务器

为了开发的某某需求,运维人员也是苦逼的去执行,谁叫人家6 呢。。。言归正传,公司开发领导根据公司的需求,要求搭建公司自己的私有服务器maven,为什么要搭建私有服务器呢,简单总结一下:...

射手Mr吴 ⋅ 2016/03/28 ⋅ 0

Maven私服 Nexus的搭建

背景: 私服:私有服务器,是公司内部Maven项目经常用到的私有仓库。Nexus就是一款常用的私用Maven服务器,一般是公司内部使用。 下载地址是:http://www.sonatype.org/nexus/go 默认本地地址...

huoyoung ⋅ 2016/09/11 ⋅ 0

[Sonatype Nexus]Nexus配置私有Maven库引入自定义jar包

上篇博文中,讲了如何搭建部署并且使用我们自己搭建的maven私有仓库; 那么,如果我们项目团队自己有自定义的jar包该如何添加入我们的私有仓库呢? 紧接着上篇博文: [Sonatype Nexus]Ubuntu...

luckcheng ⋅ 2017/06/20 ⋅ 0

项目管理Maven篇(2)-Sonatype Nexus

本文主要讲解Sonatype Nexus私有仓库部分,关于Maven的基础知识请阅读我另一篇文章:项目管理Maven篇(1)-基础详解 介绍 私服的优点:解决中央仓库网络、重复下载、本公司非公开组件多项目依赖...

阿郎_ ⋅ 2017/04/08 ⋅ 0

Maven远程仓库搭建与配置

我们知道,Maven仓库包括本地仓库和远程仓库,而远程仓库又包括中央仓库,私服,Jboss仓库和Java.net仓库等。 私服,即私有的仓库服务器,它不仅可以降低中央仓库负荷,节省外网带宽,还可以...

xiaml ⋅ 2016/03/14 ⋅ 0

使用Eclipse-Maven-git做Java开发(7)--maven概览

前面一篇博客用自己的口水话啰里啰嗦地说了一下maven,这里将里面需要知道的东西提出来一下,为后面的博客做准备。 0、资料 学习maven最好的资料就是官方网站了,其次搜索构件自然是中央仓库...

阿信sxq ⋅ 2015/09/14 ⋅ 0

自动化部署之Maven的私有仓库Nexus

1、什么是Nexus? 在前面进行maven项目的构建中,可以看到在构建的过程中需要安装maven的依赖插件,如图: 而在maven的默认配置中是在官网的中央仓库和第三方的maven仓库进行下载,速度偏慢。...

IT_外卖小哥 ⋅ 2017/12/25 ⋅ 0

搭建maven私仓

公司使用国外maven源很慢,打算使用本地仓库解决依赖问题,这里搭建很简单,直接把全部命令贴上来了,一步步执行即可 maven仓库使用nexus来进行搭建,依赖jdk对应版本,步骤如下 yum -y ins...

chenshifei ⋅ 2017/03/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 16分钟前 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 24分钟前 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 34分钟前 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 46分钟前 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部