文档章节

maven 搭建私有仓库

x163麦芽糖
 x163麦芽糖
发布于 2016/06/07 14:50
字数 2018
阅读 674
收藏 5

用nexus搭建自己的maven私有倉庫

 

环境是:nexus-2.13、maven-3.3.9、jdk-1.7

一、用admin用户登陆nexus 

nexus的下载和安装都很简单,网上也有很多介绍,本文就不重复了。主要介绍一下安装之后的配置 

nexus的配置需要用admin角色完成,默认的密码是admin123,进入nexus首页之后,点击右上角,进行登录 

 

然后就可以在左边的菜单中进行配置了 

 

二 。。。。。。。。

 


三、配置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才会从centralrepository下载索引,才能在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代码 

 收藏代码

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"   
  4.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  6.    
  7.   <servers>  
  8.     
  9.     <server>  
  10.         <id>nexus-snapshots</id>  
  11.         <username>deployment</username>  
  12.         <password>deployment</password>  
  13.     </server>  
  14.   
  15.   </servers>  
  16.     
  17.   <mirrors>  
  18.     
  19.     <mirror>  
  20.         <id>nexus</id>  
  21.         <name>internal nexus repository</name>  
  22.         <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>  
  23.         <mirrorOf>central</mirrorOf>  
  24.     </mirror>  
  25.       
  26.   </mirrors>  
  27.     
  28. </settings>  

 

设置Maven从Nexus私服下载构件

可以设置某个项目从私服下载,设置项目的pom.xml如下:

复制代码

1 <project>
 2 ...
 3     <repositories>
 4         <repository>
 5             <id>nexus</id>
 6             <name>Nexus</name>
 7             <url>http://202.117.15.193:8010/nexus/content/groups/public/</url>
 8             <releases><enabled>true</enabled></releases>
 9             <snapshots><enabled>true</enabled></snapshots>
10         </repository>
11     </repositories>
12     <pluginRepositories>
13         <pluginRepository>
14             <id>nexus</id>
15             <name>Nexus</name>
16             <url>http://202.117.15.193:8010/nexus/content/groups/public/</url>
17             <releases><enabled>true</enabled></releases>
18             <snapshots><enabled>true</enabled></snapshots>
19         </pluginRepository>
20     </pluginRepositories>
21 ...
22 </project>

复制代码

但是这需要为每个项目配置一下,有可能你仅仅需要为你开发的所有项目都用这同一个私服,那么很好,settings.xml提供了profile来设置:

复制代码

1 <settings>
 2     ...
 3     <profiles>
 4         <profile>
 5             <id>nexus</id>
 6             <repositories>
 7                 <repository>
 8                     <id>nexus</id>
 9                     <name>Nexus</name>
10                     <url>http://202.117.15.193:8010/nexus/content/groups/public/</url>
11                     <releases><enabled>true</enabled></releases>
12                     <snapshots><enabled>true</enabled></snapshots>
13                 </repository>
14             </repositories>
15             <pluginRepositories>
16                 <pluginRepository>
17                     <id>nexus</id>
18                     <name>Nexus</name>
19                     <url>http://202.117.15.193:8010/nexus/content/groups/public/</url>
20                     <releases><enabled>true</enabled></releases>
21                     <snapshots><enabled>true</enabled></snapshots>
22                 </pluginRepository>
23             </pluginRepositories>
24         </profile>
25     </profiles>
26     <activeProfiles>
27         <activeProfile>nexus</activeProfile>
28     </activeProfiles>
29     ...
30 </settings>

复制代码

上面的配置是针对下载构件的,如果所有的下载都从私服上进行,就需要配置镜像了!如下所示:

复制代码

1 <settings>
 2     ...
 3     <mirrors>
 4         <mirror>
 5             <id>nexus</id>
 6             <mirrorOf>*</mirrorOf>
 7             <url>http://202.117.15.193:8010/nexus/content/groups/public/</url>
 8         </mirror>
 9     </mirrors>
10     <profiles>
11         <profile>
12             <id>nexus</id>
13             <repositories>
14                 <repository>
15                     <id>central</id>
16                     <url>http://central</url>
17                     <releases><enabled>true</enabled></releases>
18                     <snapshots><enabled>true</enabled></snapshots>
19                 </repository>
20             </repositories>
21             <pluginRepositories>
22                 <pluginRepository>
23                     <id>central</id>
24                     <url>http://central</url>
25                     <releases><enabled>true</enabled></releases>
26                     <snapshots><enabled>true</enabled></snapshots>
27                 </pluginRepository>
28             </pluginRepositories>
29         </profile>
30     </profiles>
31     <activeProfiles>
32         <activeProfile>nexus</activeProfile>
33     </activeProfiles>
34     ...
35 </settings>


九、配置maven项目的pom文件 

下面是简化后的pom文件: 
Xml代码 

 收藏代码

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   
  4.     <modelVersion>4.0.0</modelVersion>  
  5.     <groupId>com.huawei.inoc.wfm.task</groupId>  
  6.     <artifactId>task-sla</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <name>task-sla</name>  
  9.   
  10.     <!-- 配置部署的远程仓库 -->  
  11.     <distributionManagement>  
  12.         <snapshotRepository>  
  13.             <id>nexus-snapshots</id>  
  14.             <name>nexus distribution snapshot repository</name>  
  15.             <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>  
  16.         </snapshotRepository>  
  17.     </distributionManagement>  
  18.   
  19. </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目录,就是构件实际存放的地址了

 

 

 

 

最后传一个 完整的 maven 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">

  <pluginGroups>

  </pluginGroups>
  <proxies>

  </proxies>


  <servers>

    <server>
        <id>nexus-releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>  
  </servers>
  <mirrors>

    <mirror>
        <id>nexus</id>
        <name>internal nexus repository</name>
        <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>  

  </mirrors>
  <profiles>

    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>nexus</id>
                <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
                <releases>
                    <checksumPolicy></checksumPolicy>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>

        <pluginRepositories>
            <pluginRepository>
                <id>nexus</id>
                <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile> 
    
  </profiles>
  
  <activeProfiles>  
      <activeProfile>nexus</activeProfile>  
  </activeProfiles>  
</settings>
 

本文转载自:http://www.cnblogs.com/yakov/archive/2011/11/21/maven2_plugin_dev.html

上一篇: dubbo源码编译
下一篇: maven eclipse
x163麦芽糖
粉丝 0
博文 16
码字总数 371
作品 0
朝阳
私信 提问
Maven私有库Nexus的安装和使用

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

曾静的技术博客
2017/07/21
0
0
使用Eclipse-Maven-git做Java开发(7)--maven概览

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

阿信sxq
2015/09/14
376
0
Maven【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】

搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找—>私有仓库—>中心仓库… 然而,我们的本地仓库常常没有想要的jar包的...

Nonry
02/18
112
0
搭建私有maven仓库并在项目中使用

这是一篇写给女朋友看的教程...前方高能,注意避让~ 1.私有maven仓库的搭建 搭建环境为阿里云ESC服务器,CentOS.确保服务器已经安装Jdk。然后我要手把手教你安装和启动nexus。 Step1:新建一个...

liululee
01/16
262
0
使用verdaccio搭建npm私有仓库 - Better’s study fairyland

使用verdaccio搭建npm私有仓库 使用verdaccio搭建npm私有仓库 需求背景:平时在项目工作中可能会用到很多通用性的代码,比如,框架类、工具类以及公用的业务逻辑代码等等,通过打包发布到npm...

Better
02/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
170
4
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部