maven远程仓库的搭建

远程仓库分类

分类

  • 本地仓库
    maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置,变更maven默认的本地仓库的位置可更改存在于maven的settings.xml文件中localRepository的标签中的地址
  • 远程仓库
    • 中央仓库
      maven官方的远程库,中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载得到
    • 私服
      私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上
    • 其他公共库

mirror元素和repository元素的联系和区别
repository就是个仓库。maven里有两种仓库,本地仓库和远程仓库。远程仓库相当于公共的仓库,大家都能看到。本地仓库是你本地的一个山寨版,只有你看的到,主要起缓存作用。当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。如果有则直接返回,否则会向远程仓库请求,并做缓存。你也可以把你做的东西上传到本地仓库给你本地自己用,或上传到远程仓库,供大家使用。
mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。比如,上班的时候在公司,用电信的网络,连的是电信的仓库。回到家后,是网通的网络,我想连网通的仓库,就可以通过mirror配置,统一把我工程里的仓库地址都改成联通的,而不用到具体工程配置文件里一个一个地改地址。

远程仓库的搭建

本例采用nexus,前提条件是要有JDK环境

安装以及启动、访问

tar -zvxf nexus-2.12.0-01-bundle.tar.gz #直接解压包至自己指定的目录
./bin/nexus start #进入解压后的目录下进行启动

默认情况下,不建议以root用户运行Nexus,可以修改bin/nexus中的配置跳过警告(修改RUN_AS_USER=root)

也可采用war包部署在web容器的方式来启动,相应的配置文件路径为:相应工程的WEB-INF/plexus.properties

访问网址:http://127.0.0.1:8081/nexus/

nexus简单配置

b u n d l e B a s e d i r 为 n e x u s 安 装 目 录 配 置 文 件 路 径 / {bundleBasedir}为nexus安装目录 配置文件路径/ bundleBasedirnexus/{bundleBasedir}/conf/nexus.properties

# Jetty section
application-port=8081 #访问端口
application-host=0.0.0.0 #允许访问的ip,此例为允许所有ip
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus #工作目录,即仓库所在地
runtime=${bundleBasedir}/nexus/WEB-INF #运行时的目录

maven使用远程仓库初步配置

1、配置远程仓库repositories标签
1     <!-- 配置远程仓库 -->
 2     <repositories>
 3         <repository>
 4             <id>nexus</id> 
 5             <name>nexusname</name>
 6             <url>http://192.168.80.135:8081/nexus/content/groups/public/</url>
 7             <releases>
 8                 <enabled>true</enabled>
 9                 <updatePolicy>daily</updatePolicy>
10             </releases>
11             <snapshots>
12                 <enabled>false</enabled>
13                 <checksumPolicy>warn</checksumPolicy>
14             </snapshots>
15             <layout>default</layout>
16         </repository>
17     </repositories>
18		<pluginRepositories> #插件仓库
19                <pluginRepository>
20                    <id>nexus</id>
21                    <url>http://192.168.80.135:8081/nexus/content/groups/public/</url>
22                  <releases>
23                        <enabled>true</enabled>
24                        <updatePolicy>always</updatePolicy>
25                   </releases>
26                    <snapshots>
27                        <enabled>true</enabled>
28                        <updatePolicy>always</updatePolicy>
29                   </snapshots>
30                </pluginRepository>
31            </pluginRepositories>
  • repository:在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。

  • id:仓库声明的唯一id,尤其需要注意的是,Maven自带的中央仓库使用的id为central,如果其他仓库声明也使用该id,就会覆盖中央仓库的配置。

  • name:仓库的名称,让我们直观方便的知道仓库是哪个,暂时没发现其他太大的含义。

  • url:指向了仓库的地址,一般来说,该地址都基于http协议,Maven用户都可以在浏览器中打开仓库地址浏览构件。

  • releases和snapshots:用来控制Maven对于发布版构件和快照版构件的下载权限。需要注意的是enabled子元素,该例中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。根据该配置,Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。

  • layout:元素值default表示仓库的布局是Maven2及Maven3的默认布局,而不是Maven1的布局。基本不会用到Maven1的布局。

  • 其他:对于releases和snapshots来说,除了enabled,它们还包含另外两个子元素updatePolicy和checksumPolicy。

    • updatePolicy用来配置Maven从远处仓库检查更新的频率,默认值是daily,表示Maven每天检查一次。其他可用的值包括:never-从不检查更新;always-每次构建都检查更新;interval:X-每隔X分钟检查一次更新(X为任意整数)。
    • checksumPolicy用来配置Maven检查校验和文件的策略。当构建被部署到Maven仓库中时,会同时部署对应的检验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息,其他可用的值包括:fail-Maven遇到校验和错误就让构建失败;ignore-使Maven完全忽略校验和错误

2、远程仓库认证

大部分公共的远程仓库无须认证就可以直接访问,但我们在平时的开发中往往会架设自己的Maven远程仓库,出于安全方面的考虑,我们需要提供认证信息才能访问这样的远程仓库。配置认证信息和配置远程仓库不同,远程仓库可以直接在pom.xml中配置,但是认证信息必须配置在settings.xml文件中。这是因为pom往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只存在于本机。因此,在settings.xml中配置认证信息更为安全,其中Id名和远程仓库的名字需要一致。

     <!--配置远程仓库认证信息-->
     <servers>
         <server>
             <id>releases</id>
             <username>admin</username>
             <password>admin123</password>
         </server>
     </servers>

3、配置仓库镜像

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。举个例子,http://maven.oschina.net/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务。因此,可以配置Maven使用该镜像来替代中央仓库

1 <!--配置私服镜像-->
2 <mirrors> 
3     <mirror>  
4         <id>nexus</id>  
5         <name>internal nexus repository</name>  
6         <url>http://183.238.2.182:8081/nexus/content/groups/public/</url>  
7         <mirrorOf>*</mirrorOf>  
8     </mirror>  
9 </mirrors>

该例中的值为星号,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http://183.238.2.182:8081/nexus/content/groups/public/。如果该镜像仓库需要认证,则配置一个id为nexus的认证信息即可

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值