搭建Maven私服(使用Nexus)

  1. 云栖社区>
  2. 博客列表>
  3. 正文

搭建Maven私服(使用Nexus)

单红宇 2016-03-02 14:48:01 浏览20779 评论0

摘要: 搭建私服可以做什么?1、如果公司开发组的开发环境全部内网,这时如何连接到在互联网上的Maven中央仓库呢?2、如果公司经常开发一些公共的组件,如何共享给各个开发组,使用拷贝方式吗?如果这样,公共库升级了怎么办? 当然可以解决的问题可能不止上面两点,下面来介绍在Linux中搭建自己的Maven私服,使用Nexus。

搭建私服可以做什么?
1、如果公司开发组的开发环境全部内网,这时如何连接到在互联网上的Maven中央仓库呢?
2、如果公司经常开发一些公共的组件,如何共享给各个开发组,使用拷贝方式吗?如果这样,公共库升级了怎么办?

当然可以解决的问题可能不止上面两点,下面来介绍在Linux中搭建自己的Maven私服,使用Nexus。

一、下载和安装

网址:http://www.sonatype.org/nexus/go/
1

下载包:nexus-2.12.0-01-bundle.tar.gz
解压包:tar -zxvf nexus-2.12.0-01-bundle.tar.gz
默认端口为8081,如需修改请查看配置文件 conf/nexus.properties
它本身不建议在root用户下使用,如果我们需要在root用户下启动服务,要先配置 bin/nexus 文件中的 RUN_AS_USER=root

二、私服的启动和配置

启动

[root@localhost nexus-maven]# cd nexus-2.12.0-01/bin/
[root@localhost bin]# ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...
Started Nexus OSS.
[root@localhost bin]# ./nexus status
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Nexus OSS is running (34504).
[root@localhost bin]#

启动后访问首页: http://192.168.19.130:8081/nexus/index.html

登录默认账号/密码 admin/admin123
2

打开 Repositories 将列表中所有Type为proxy 的项目的 Configuration 中的 Download Remote Indexes 设置为True
3

将Releases仓库的Deployment Policy设置为*Allow ReDeploy
4

设置 deployment 账户密码
5
6

然后在Central 仓库上右键然后点击 Repair Index 下载中心仓库的索引文件,若干时间后,可以点击下边的 Browse Index 即可看见下载的索引文件。


当然我们也避免不了会使用到一些第三方的 jar ,而这些jar包也不存在于互联网上的maven中央仓库中,这时我们可以手工添加jar 到我们的私服中。
添加第三方 jar 如下:
![7](https://oss.aliyuncs.com/yqfiles/3238db453965d4c68af6ce3e89500f66361d3517.png

如果需要删除,如下:)
8

三、本地项目配置引用私服

在项目的 pom.xml 中配置私库地址,pom.xml 的下面添加:

    <!-- 私有仓库 -->
    <repositories>  
        <repository>  
            <id>public</id>  <!--这个ID需要与你的组group ID一致--> 
            <name>Public Repository</name>
            <url>http://192.168.19.130:8081/nexus/content/groups/public</url>   
        </repository>  
    </repositories> 

    <!-- 打包发布 -->
    <distributionManagement>
        <repository>
            <id>releases</id><!--这个ID需要与你的release仓库的Repository ID一致-->
            <url>http://192.168.19.130:8081/nexus/content/repositories/releases</url>
        </repository>

        <snapshotRepository>
            <id>snapshots</id><!--这个ID需要与你的snapshots仓库的Repository ID一致-->
            <url>http://192.168.19.130:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

在settings.xml 中配置 server 账户信息:

  <servers>
     <server>
        <id>releases</id>
        <username>deployment</username>
        <password>dev123</password><!--这个密码就是你设置的密码-->
    </server>
    <server>
        <id>snapshots</id>
        <username>deployment</username>
        <password>dev123</password><!--这个密码就是你设置的密码-->
    </server>
  </servers>

需要说明一点:
当pom.xml中同时配置了releases仓库和snapshots仓库时。
pom.xml文件开头的版本配置1.0.0-SNAPSHOT为build到snapshots库,
pom.xml文件开头的版本配置1.0.0 (不带-SNAPSHOT) 的会build到releases库,
如果只配置了releases库而版本号写的是带-SNAPSHOT的,build到最后一步会报400错误,因为它找不到对应的库。

四、测试

1、新建一个简单的maven项目,随便写个类。
在pom.xml 文件按上面 三、本地项目配置引用私服 方法添加 私有仓库和打包发布配置
然后使用命令 mvn deploy 发布成功后,此时我们在我们的私服中就可以看到发布后的结果,如下:
9

2、再新建一个项目,或者使用已有的maven项目(最好使用别人的环境不同的电脑)。
在pom.xml 中和第1步一样先配置私库地址,然后添加第1步发布后的 dependency 后,就可以看到jar 被正常加载到工程中了。
0

用云栖社区APP,舒服~

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击

网友评论

单红宇
文章334篇 | 关注149
关注
提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性... 查看详情
是阿里云为云服务器ECS提供的低时延、持久性、高可靠的数据块级随机存储。 查看详情
构建在阿里云飞天分布式系统之上的NoSQL数据存储服务,提供海量结构化数据的存储和实时访问。 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里云总监课正式启航

阿里云总监课正式启航