1. 安装私服
> docker run -d -p 8081:8081 --name nexus3 sonatype/nexus3
> docker exec -it nexus3 /bin/bash
> cat nexus-data/xxx.pwd //获取第一次登录得默认密码,第一次登录时访问页面会提示路径和默认密码文件名
> firewall-cmd --zone=public --permanent --add-port=8081/tcp
### 访问地址
http://192.168.3.15:8081 账户amdin,密码是刚才的默认密码
登录后设置服务器可以使用匿名用户访问
私服有group(集合库), hosted(本地库), proxy(代理库) 3种库 group 整合了hosted,proxy,让私服暴露一个public(group库)给用户使用 proxy 库背后可配置阿里,华为,或其他的中央仓库,是一个代理 hosted 分为release, snapshot 2种,用户用户自己管理属于自己使用的jar包
2. 配置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">
<!-- 默认的值是${user.home}/.m2/repository -->
<localRepository>/Users/scott/Develop/Repository/rmaven</localRepository>
<!-- 如果Maven要试图与用户交互来得到输入就设置为true,否则就设置为false,默认为true。 -->
<interactiveMode>true</interactiveMode>
<!-- 如果Maven使用${user.home}/.m2/plugin-registry.xml来管理plugin的版本,就设置为true,默认为false。 -->
<usePluginRegistry>false</usePluginRegistry>
<!-- 如果构建系统要在离线模式下工作,设置为true,默认为false。 如果构建服务器因为网络故障或者安全问题不能与远程仓库相连,那么这个设置是非常有用的。 -->
<offline>false</offline>
<!--配置一个阿里镜像-->
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<!-- settings.xml中的profile是pom.xml中的profile的简洁形式。 它包含了激活(activation),仓库(repositories),插件仓库(pluginRepositories)和属性(properties)元素。
profile元素仅包含这四个元素是因为他们涉及到整个的构建系统,而不是个别的POM配置。 如果settings中的profile被激活,那么它的值将重载POM或者profiles.xml中的任何相等ID的profiles。 -->
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<repositories>
<repository>
<id>release_user</id>
<name>Nexus Public</name>
<url>http://192.168.3.15:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots/>
<id>release_user</id>
<name>nexus-releases</name>
<url>http://192.168.3.15:8081/repository/maven-public/</url>
</pluginRepository>
<pluginRepository>
<snapshots/>
<id>aliyun-releases</id>
<name>releases</name>
<url>https://maven.aliyun.com/repository/releases</url>
</pluginRepository>
<pluginRepository>
<snapshots/>
<id>spring-plugins-releases</id>
<name>releases</name>
<url>https://repo.spring.io/plugins-release</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- activations是profile的关键,就像POM中的profiles,profile的能力在于它在特定情况下可以修改一些值。
而这些情况是通过activation来指定的。 -->
<!-- <activeProfiles/> -->
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
<!--私服的访问账户密码,注意这个id要与repository id配置一致才能使用得上-->
<servers>
<server>
<id>release_user</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>snapshot_user</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
</settings>
配置普通得pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<dependencies>
...
</dependencies>
<distributionManagement>
<repository>
<id>release_user</id>
<name>Release Deploy</name>
<url>http://192.168.3.15:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshot_user</id>
<name>Snapshot Deploy</name>
<url>http://192.168.3.15:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>release_user</id>
<name>Nexus Public</name>
<url>http://192.168.3.15:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots />
<id>release_user</id>
<name>nexus-releases</name>
<url>http://192.168.3.15:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</project>
仓库优先级
- 中央仓库,这是默认的仓库
- 镜像仓库,通过 sttings.xml 中的 settings.mirrors.mirror 配置
- 全局profile仓库,通过 settings.xml 中的 settings.profiles.profile.repositories.repository 配置
- 项目仓库,通过 pom.xml 中的 project.repositories.repository 配置
- 项目profile仓库,通过 pom.xml 中的 project.profiles.profile.repositories.repository 配置
- 本地仓库
依赖优先级关系由近(本地仓库)及远(中央仓库)