前言:最近打算建一个自己的maven私服,尝试连接上去,本地打包上传到私服,所以记录一下,以防备用
目录
1.docker 启动 拉取nexus镜像,启动nexus:
3.根据提示修改admin密码,复制maven地址,如下都是maven库,可以copy地址
1.修改apache-maven的setting.xml文件,添加私服账号
准备工作:
1.docker for windows
2.idea新建maven项目
3.下载apache-maven,准备修改apache-maven-3.5.4.1\conf\setting.xml
正文:
1.docker 启动 拉取nexus镜像,启动nexus:
>docker pull sonatype/nexus3
#启动并映射在本地8081端口
>docker run -d -p 8081:8081 --name nexus sonatype/nexus3
启动http://localhost:8081
2.获取admin密码,登录admin账户
admin的密码文件存放在以下位置(文件名忘了,差不多是这样)
>docker container exec -it d06022498a04 /bin/bash
>cd /opt/sonatype/sonatype-work/nexus3
>cd adminpassword.txt
3.根据提示修改admin密码,复制maven地址,如下都是maven库,可以copy地址
文件上传
1.修改apache-maven的setting.xml文件,添加私服账号
<servers>
#自定义id,pom文件用到
<server>
<id>mai-snapshots</id>
#nexus-maven设定的用户
<username>admin</username>
<password>mai123456</password>
</server>
</servers>
2.pom文件,上传到nexus的部分,public库是肯定上传一份的
要注意这里我选的是<snapshotRepository>标签,maven库必须选择snapshots
如果选择realse库,那就填<repository>标签,而且该项目的<version>不能带有snapshots
<distributionManagement>
<snapshotRepository>
#对应serverId,部署后上传jar包地址,注意这里是快照的库,需要一一对应,不然报错
<id>mai-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
jar包拉取
仓库优先级为:本地仓库(localRepositories[/.m2]) > profile中的repositories仓库 > POM > mirrors全局仓库
1.设置setting文件,用于项目在该环境拉取项目
详解一下<mirrorof>,研究了很久,其实发现就是拦截器,配合<repository>的<id>使用,用于替换他的url地址,<repository>下有一个缺省的仓库,那就是<id>central</id>的apache仓库。因为是国外库,下载速度慢,所以<mirror>通常用来拦截<id>central</id>:
mirrorOf=“*” //mirror一切,使用后配置的所有repository不起作用了,因为全都被拦截了
mirrorOf=my-repo-id //镜像my-repo-id,你配置的my-repo-id仓库不起作用了,就拦截了他
mirrorOf=*,!my-repo-id //!表示非运算,排除你配置的my-repo-id仓库,其他仓库都被镜像了。就是请求下载my-repo-id的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载
mirrorOf=external:* //如果本地库存在就用本地库的,如果本地没有所有下载就用mirror配置的url下载
作者:忘光光
链接:https://www.jianshu.com/p/c4f02c5bdfc7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#本地仓库,最高优先集
<localRepository>C:/user/.m2</localRepository>
<mirror>
#mirror相当于拦截器,缺省的id=central被拦截了,拉取代码从下面地址拉取
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<profiles>
<profile>
#自定义环境名,<activeProfiles>可以切换环境
<id>snapshot</id>
#可以设定多个maven库
#profiles 一般用于搭建私服,下载优先级仅次于本地
<repositories>
<repository>
#对应serverId
<id>mai-snapshots</id>
#nexus里面的库地址
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
#maven插件管理仓库,优先从下面地址下载插件,缺省central的库
<id>mai-snapshots</id>
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
#默认拉取的profiles
<activeProfiles>
<activeProfile>snapshot</activeProfile>
</activeProfiles>
2.pom文件,拉取nexus到本地
#该地方配置优先于setting.xml文件加载,覆盖setting文件,也会被mirror拦截
<repositories>
<repository>
#对应serverId
<id>mai-snapshots</id>
#nexus里面的库地址
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>