Docker 安装 Maven 私服并配置

Docker 安装文档

1. 安装Maven

拉取镜像

docker pull sonatype/nexus3

创建挂载路径并分配权限

mkdir -p /home/nexus/nexus-data && chown -R 200 /home/nexus/nexus-data

运行容器

docker run -d -p 8087:8081 --restart=always --name nexus -v /home/nexus/nexus-data:/nexus-data sonatype/nexus3

查看默认密码

如果提示没有那个文件或目录,请多等一会,确定容器已经初始化成功,启动完成

cat /home/nexus/nexus-data/admin.password

2. 配置Maven

2.1 、进入管理界面

  • Browse可以查看当前有多少仓库,搭建好的Nexus,默认会带有一些maven仓库,一般使用这些仓库就足够了。
  • 默认仓库说明

​ maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar

​ maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy

​ maven-snapshots:私库快照(调试版本)jar

​ maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用

  • 仓库类型

​ Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots, Central,当然你也可以自己设置。
​ Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件
​ 3rd party:未发布到公网的第三方jar (3.x去除了)
​ Snapshots:本地项目的快照仓库
​ Releases: 本地项目发布的正式版本
​ Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库
​ Central:中央仓库
​ Apache Snapshots:Apache专用快照仓库(3.x去除了)

2.2、增加新的代理源

第一步 按照步骤添加新的代理源

第二步选择添加maven2的代理

第三步添加代理(Cache统一设置为200天 288000)

第四步逐个增加常用代理

1. aliyun
https://maven.aliyun.com/repository/public
2. apache_snapshot
https://repository.apache.org/content/repositories/snapshots/
3. apache_release
https://repository.apache.org/content/repositories/releases/
4. atlassian
https://maven.atlassian.com/content/repositories/atlassian-public/
5. central.maven.org
http://central.maven.org/maven2/
6. datanucleus
http://www.datanucleus.org/downloads/maven2
7. maven-central (安装后自带,仅需设置Cache有效期即可)
https://repo1.maven.org/maven2/
8. nexus.axiomalaska.com
http://nexus.axiomalaska.com/nexus/content/repositories/public
9. oss.sonatype.org
https://oss.sonatype.org/content/repositories/snapshots
10.pentaho
https://public.nexus.pentaho.org/content/groups/omni/
11.google
https://maven.aliyun.com/repository/google
12.gradle-plugin
https://maven.aliyun.com/repository/gradle-plugin
13.spring
https://maven.aliyun.com/repository/spring
14.spring-plugin
https://maven.aliyun.com/repository/spring-plugin
15.grails-core
https://maven.aliyun.com/repository/grails-core
16.apache_snapshots
https://maven.aliyun.com/repository/apache-snapshots

第五步 设置maven-public 将这些代理加入Group,最好将默认的maven库放到最底下

第六步 设置私用仓库可重复发布

​ Nexus安装后自带maven-releases,maven-snapshots两个仓库,用于将生成的jar包发布在这两个仓库中,在实际开发中需要将maven-releases设置为可以重复发布

2.3 、maven中的settings配置

记得将下方配置文件中的ip地址更改为你自己的

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
		  
  <localRepository>C:/tool/repository</localRepository>

  <pluginGroups>
  
  </pluginGroups>

  <proxies>
  
  </proxies>
  
	<servers>
		<server>
			<id>release</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		<server>  
			<id>snapshots</id>  
			<username>admin</username>  
			<password>admin123</password>  
		</server> 
	</servers>

  <mirrors>
    
	<mirror>
      <id>HolliParkMirror</id>
      <mirrorOf>*</mirrorOf>
      <name>HolliPark Repository Mirror.</name>
      <url>http://10.160.6.217:8087/repository/maven-public/</url>
    </mirror>

  </mirrors>

  <profiles>
	<profile>
		<id>HolliPark</id>
		<repositories>
			<repository>
			  <id>nexus</id>
			  <name>Public Repositories</name>
			  <url>http://10.160.6.217:8087/repository/maven-public/</url>
			  <releases>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
		  
			<repository>
			  <id>central</id>
			  <name>Central Repositories</name>
			  <url>http://10.160.6.217:8087/repository/maven-central/</url>
			  <releases>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
			
			<repository>
			  <id>release</id>
			  <name>Release Repositories</name>
			  <url>http://10.160.6.217:8087/repository/maven-releases/</url>
			  <releases>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
			
			<repository>
			  <id>snapshots</id>
			  <name>Snapshot Repositories</name>
			  <url>http://10.160.6.217:8087/repository/maven-snapshots/</url>
			  <releases>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
		</repositories>
		  
	    <pluginRepositories>
		  <pluginRepository>
		    <id>plugins</id>
		    <name>Plugin Repositories</name>
		    <url>http://10.160.6.217:8087/repository/maven-public/</url>
		  </pluginRepository>
	    </pluginRepositories>
	</profile>
    
  </profiles>
</settings>