私服是一个特殊的远程仓库,它是架设在局域网内的仓库服务。私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构建的使用,它先从私服请求,如果私服上没有的话,则从外部的远程仓库下载,然后缓存在私服上,再为Maven的下载请求提供服务。
在maven中,配置setting.xml,之后通过mvn deploy命令可以将包传入私服
有些第三方jar包,我们需要一般通过新建仓库进行上传
setting.xml配置
<servers> <server> <id>nexus</id> <username>gaming</username> <password>gaming</password> </server> </servers>
pom.xml配置下
<distributionManagement> <repository> <id>nexus</id> <name>releases Repository</name> <url>http://192.168.1.222/repository/gaming/</url> </repository> </distributionManagement>
1、自己maven私服更容易维护,公司开发从maven私服迁出jar到本地仓库更快
2、有些公司未开放外网给开发人员
登录nexus后台,选择创建repository
respository介绍
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列表。不过要注意浏览器缓存。
选中maven2(hosted)
自定义仓库名,其余使用默认
之后就上传成功,这是在后台上传
也可以通过命令上传
mvn deploy:deploy-file -DgroupId=net.sf -DartifactId=json-lib -Dversion=2.4 -Dpackaging=jar -Dfile=E:/json-lib-2.4.jar -Durl=http://192.168.1.222/nexus/repository/releases/ -DrepositoryId=releases
参数说明
mvn deploy:deploy-file
- -DgroupId=xxxxxx 就相当于pom中的groupId
- -DartifactId=xxxxxx就相当于pom中的artifactId
- -Dversion=xxxxxx就相当于pom中的版本号version
- -Dpackaging=xxxxxx就相当于pom中打包方式
- -Dfile=xxxxxx本地环境
- -Durl=xxxxxx上传的url
- -DrepositoryId=xxxxxx对应的是setting.xml 里边的id
下载,需要修改maven的setting.xml
设置repository
之后reimport即可。