使用Docker基于Nexus3快速搭建Maven私有仓库

  • 2019 年 11 月 22 日
  • 筆記

Maven的基础示意图

Maven的基础示意图

环境搭建

docker pull sonatype/nexus3

Nexus3镜像

  • 创建nexus的挂载文件夹 文件夹的目录可以根据个人情况指定,如果不想挂载文件夹,那么可以忽略这一步(记住:忽略之后,下面的指令把-v的那部分去掉),资源就由容器自行去管理,为了数据的安全性,建议挂载操作
mkdir /usr/local/nexus-data && chown -R 200 /usr/local/nexus-data
  • 启动容器
docker run -d -p 8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data --restart=always sonatype/nexus3

启动容器并将宿主机/usr/local/nexus-data目录需要提前创建)目录映射到容器/nexus-data目录,这样就可以保存容器产生的文件了,具体请百度查询docker相关信息。 安装完成。

系统配置

浏览器地址栏输入IP:8081进入nexus3管理界面。

nexus管理首页

点击右上角的登录,登录管理,admin密码首次登录需要去指定位置查看随机生成的密码。

登录窗口

可以在登录窗口上看到密码的指定存放位置为/nexus-data/admin.password,因为该目录已经映射为宿主机的/usr/local/nexus-data目录。所以直接到/usr/local/nexus-data目录下查看文件admin.password

查看admin密码

可以看到admin的密码为09eac30e-b2f9-437d-9770-b35202ee43b7,这时就可以登录admin用户了,登录后nexus会要求重新设置新的admin密码。

  • 为Nexus配置阿里云代理仓库 Nexus默认远程仓库为 https://repo1.maven.org/maven2/,慢死,还常连不上。

默认代理仓库

默认代理仓库地址

添加阿里云代理仓库:

添加仓库

选择类型

设置仓库信息

其他默认,翻到最下面,点create repository;

保存信息

显示 Ready to Connect就OK了:

image

把aliyun添加到仓库组中,记得把aliyun排在central上边:

设置代理仓库顺序

image

  • 创建一个用户,用于上传jar包到仓库

用户设置

添加用户

最后点击保存用户。 到此Nexus的私有仓库基本设置完毕。

设置本地的maven到私有仓库

  • 配置maven信息

maven目录结构

进入conf文件夹,找到settings.xml文件打开:

  • 找到servers节点,设置刚刚创建好的用户,比如我这里的用户为:
<server>     <id>public</id>     <username>zihui</username>     <password>zihui123456</password>  </server>
  • 找到mirrors节点,设置仓库地址:
      <!--内部maven-->          <mirror>              <id>central</id>              <name>Central Repository</name>              <url>http://10.168.1.118:8081/repository/maven-public/</url>              <mirrorOf>*</mirrorOf>          </mirror>            <!-- 阿里云仓库 -->          <mirror>              <id>alimaven</id>              <mirrorOf>central</mirrorOf>              <name>aliyun maven</name>              <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>          </mirror>            <!-- 中央仓库1 -->          <mirror>              <id>repo1</id>              <mirrorOf>central</mirrorOf>              <name>Human Readable Name for this Mirror.</name>              <url>http://repo1.maven.org/maven2/</url>          </mirror>            <!-- 中央仓库2 -->          <mirror>              <id>repo2</id>              <mirrorOf>central</mirrorOf>              <name>Human Readable Name for this Mirror.</name>              <url>http://repo2.maven.org/maven2/</url>          </mirror>
  • 最后找到profiles节点:
 <profile>              <id>maven-public</id>              <activation>                  <activeByDefault>true</activeByDefault>                  <jdk>1.8</jdk>              </activation>              <properties>                  <maven.compiler.source>1.8</maven.compiler.source>                  <maven.compiler.target>1.8</maven.compiler.target>                  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>              </properties>              <repositories>                  <repository>                      <id>nexus-public</id>                      <url>http://10.168.1.118:8081/repository/maven-public/</url>                      <releases>                          <enabled>true</enabled>                          <updatePolicy>always</updatePolicy>                      </releases>                      <snapshots>                          <enabled>true</enabled>                          <updatePolicy>always</updatePolicy>                      </snapshots>                  </repository>              </repositories>  </profile>

最后保存文件。

至此maven的基本设置就完成了。

设置项目的pom.xml文件,用于上传私有jar到私有仓库

 <build>          <plugins>              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-compiler-plugin</artifactId>                  <version>3.8.1</version>                  <configuration>                      <source>${java.version}</source>                      <target>${java.version}</target>                      <encoding>${project.build.sourceEncoding}</encoding>                  </configuration>              </plugin>              <!--发布代码Jar插件 -->              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-deploy-plugin</artifactId>                  <version>2.8.2</version>              </plugin>              <!--发布源码插件 -->              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-source-plugin</artifactId>                  <version>3.0.0</version>                  <executions>                      <execution>                          <phase>install</phase>                          <goals>                              <goal>jar-no-fork</goal>                          </goals>                      </execution>                  </executions>              </plugin>          </plugins>      </build>        <distributionManagement>          <repository>          <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 -->          <!--此仓库对应的为RELEASE版本的jar-->              <id>public</id>              <url>http://10.168.1.118:8081/repository/maven-releases/</url>          </repository>          <snapshotRepository>          <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 -->          <!--此仓库对应的为SNAPSHOT版本的jar-->              <id>public</id>              <url>http://10.168.1.118:8081/repository/maven-snapshots/</url>          </snapshotRepository>      </distributionManagement>

最后使用deploy发布属于自己的jar到自己的私有仓库。

发布jar包