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尾部不同