文档章节

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

阿信sxq
 阿信sxq
发布于 2014/11/12 12:06
字数 2163
阅读 1169
收藏 15

        用过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

粉丝 226
博文 82
码字总数 72407
作品 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 的详细安装也贡献出来😝😝,为什么我执行根目录直接一大串代码啊,上帝啊
tomcat的安装就和平时我们安装一样啊,没有区别,nexus的war版就和一般的web项目没有区别
Annie_泡泡
Annie_泡泡
能不能把tomact 的详细安装也贡献出来😝😝,为什么我执行根目录直接一大串代码啊,上帝啊
阿信sxq
阿信sxq

引用来自“文浩”的评论

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

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

曾静的技术博客
2017/07/21
0
0
Docker学习之搭建私有镜像仓库

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

小柒2012
04/16
0
0
nexus搭建maven私有服务器

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

射手Mr吴
2016/03/28
0
0
Maven私服 Nexus的搭建

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

huoyoung
2016/09/11
94
0
Nexus centos 安装

目录 1、安装nexus 2、启动nexus 2.1启动服务器 2.2以后台进程启动: 2.3web访问 3.搭建私服 3.1 界面元素介绍 3.2 仓库集合的界面 3.3 通过网页方式将jar包上传到nexus 大家nexus之后使用情...

支照
08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch节点角色类型node.master和node.data说明s

一般地,ElasticSearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。这些功能是由两个属性控制的(node.master和node.data)。默认情况下这两个属性的值都是tru...

傲娇字符
18分钟前
2
0
jdbcTemplate 分页 com.github.pagehelper.Page

由于项目中用了mybatis分页插件 com.github.pagehelper.Page 有时候复杂的查询分页想用jdbcTemplate。又想用分页。 分页对象 public class PageBean<T> implements Serializable { priv...

xiaomin0322
18分钟前
0
0
rem的使用

(function (doc, win) { var docEl = doc.documentElement var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize' var recalc = function () { var cl......

Js_Mei
25分钟前
0
0
idea 删除代码的注释

搜索栏使用 正则表达式搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*) 会搜索出来所有注释的代码 用空格replace替换掉就可以了。 或者搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\...

时刻在奔跑
28分钟前
2
0
eclipse maven 项目运行mvn clean 后无法运行

错误: 错误:找不到或无法加载主类com.yyy.test.Main 解决方法: “project” --"Clean" 参考链接:https://jingyan.baidu.com/article/cbcede07107d9802f40b4dff.html...

qimh
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部