11.使用 docker 构建 Nexus 3 Maven仓库

Maven 在构建过程中,需要去中央仓库下载所需要的构件。如果接入网络较慢,下载过的过程会很长。团队开发过程中,有一些自研的库,不能部署到开放的中央仓库,此时,需要一个私有的私有maven中央仓库,来解决这些问题。

使用 Nexus 可以轻松的构建出一个maven中央仓库供团队使用。

Nexus 官网: http://www.sonatype.com/

本节以Docker的方式,部署Nexus本地私有Maven中央仓库

关于Docker内容,参见:

部署步骤

拉取Docker镜像

$ sudo docker pull sonatype/nexus3

启动Docker容器

$ mkdir -p /data/docker/nexus3/nexus-data
$ chown -R 200 /data/docker/nexus3/

$ docker run -dit --restart=always --name nexus3 \
-v /data/docker/nexus3/nexus-data:/nexus-data \
-p 8081:8081 \
sonatype/nexus3

本地配置文件(~/.m2/settings.xml)

<?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">

  <servers>
    <server>
      <id>nexus3</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

  <profiles>
    <profile>
      <id>nexus3</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://xxx.xxx.xxx.xxx:xxxxx/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://xxx.xxx.xxx.xxx:xxxxx/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus3</activeProfile>
  </activeProfiles>

</settings>

Maven项目pom.xml

<distributionManagement>
	<repository>
		<id>nexus3</id>
		<name>nexus3-releases</name>
		<url>http://xxx.xxx.xxx.xxx:xxxxx/repository/maven-releases/</url>
	</repository>

	<!-- Publish the versioned releases here -->
	<snapshotRepository>
		<id>nexus3</id>
		<name>nexus3-snapshots</name>
		<url>http://xxx.xxx.xxx.xxx:xxxxx/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

注意:

  • id配置与settings.xml文件中的server节点id配置相同,用于部署到nexus3的认证
  • releases与snapshotsURL与settings.xml的不同,注意URL尾部不同