参考博客: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>
有一个问题:私服配置不成功。一直没解决。