首页 > 代码库 > 008Maven_建立私服

008Maven_建立私服

参考博客:http://blog.csdn.net/fengspg/article/details/22507737

 

 

 

.1. Maven私服

   关于中央仓库注意事项

l  地址: 目前来说: http://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是镜像

l  索引: 中央仓库带有索引文件以方便用户对其进行搜索,完整的索引文件大小约为60M,索引每周更新一次

l  黑名单: 如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服

     为什么需要私服

       为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

技术分享

 

 

 

 

 建立私服:

1.1.1.      Nexus环境搭建

第一步:下载nexus-webapp-1.9.2.4.war包,然后拷贝到tomcat下的webapps目录中

第二步:启动tomcat 默认登录账户密码为: admin  admin123 

第三步:访问http://localhost:8080/项目名称/

1.1.2.      认识repository

Nexus仓库的默认的地址, nexus-2.1.2\WEB-INF\plexus.properties 中定义的

在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的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。我今天就发现,明明构件已经更新了,在浏览器里却看不到,还以为是BUG,其实是被浏览器缓存了

virtual:也是中央仓库镜像,支持M1老版本

技术分享

 

技术分享

 

   Central Repository

最关键的一个配置, 就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的,

 

  配置Hosted Repository

一般会配置3个hosted repository, 分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版, 这里并没有什么特别的配置,只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止

技术分享

 

    配置group repository

前面说过group其实是一个虚拟的仓库, 通过对实体仓库(proxy、hosted)进行聚合, 对外暴露一个统一的地址这里要注意的是,放到左边的仓库,才是会被聚合的仓库

技术分享

 

 ---------------------------------------------------------------------------------------------------------------------

 

 

 

      从私服中下载资源

l  可以在支持Maven的项目中进行如下配置

<repositories>     <repository>         <id>shop</id>         <name>仓库介绍</name>     <url>http://localhost:8080/nexus-2.1.2/content/groups/public/</url>     </repository> </repositories> <pluginRepositories>     <pluginRepository>         <id>plugin</id>         <name>插件下载地址</name>     <url>http://localhost:8080/nexus-2.1.2/content/groups/public/</url>     </pluginRepository> </pluginRepositories>

l  也可以把地址配置在setting.xml的<profiles>标签中这样对所有项目都生效

<profiles>      <repositories>        <repository>            <id>shop</id>            <name>仓库介绍</name>    <url>http://localhost:8080/nexus-2.1.2/content/groups/public/</url>        </repository>    </repositories>    <pluginRepositories>          <pluginRepository>              <id>plugin</id>              <name>插件下载地址</name>        <url>http://localhost:8080/nexus-2.1.2/content/groups/public/</url>          </pluginRepository>    </pluginRepositories> </profiles>

l  把本地项目提交到私服中

<distributionManagement>        <repository>            <!-- 要在个人的setting.xml中配置上传的密码 -->            <id>snapshots</id>            <name>snapshots 测试版</name>            <!-- nexus中查找相应的地址-->            <url>http://localhost:8080/nexus/content/repositories            /snapshots/</url>        </repository></distributionManagement><servers>    <!-- 在.m2\setting.xml中 配置了要上传仓库的密码 -->    <server>        <id>snapshots</id>        <username>admin</username>        <password>admin123</password>    </server>    <server>        <id>releases</id>        <username>admin</username>        <password>admin123</password>    </server>  </servers>

 

 

有一个问题:私服配置不成功。一直没解决。

 

008Maven_建立私服