一.搭建

1.使用docker搭建

  1. docker search nexus3

image.png

  1. docker pull docker.io/sonatype/nexus3
  2. mkdir -p /usr/local/nexus3/nexus-data
  3. chown -R 200 /usr/local/nexus3/nexus-data
  4. docker run -tid -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus -v /usr/local/nexus3/nexus-data:/nexus-data docker.io/sonatype/nexus3

image.png
至此安装成功。

二.配置

1.登录nexus

  1. 访问:[http://ip:8081/nexus](http://ip:8081/nexus) 使用默认管理员身份登录,帐号:admin,密码:admin123<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590650789511-f93ce1aa-89d3-431a-b814-54177966cd09.png#align=left&display=inline&height=192&margin=%5Bobject%20Object%5D&name=image.png&originHeight=866&originWidth=2862&size=284977&status=done&style=none&width=634)

2.设置

image.png

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

    1. maven-centralmaven中央库,默认从[https://repo1.maven.org/maven2/](https://repo1.maven.org/maven2/)拉取jar<br /> maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy<br /> maven-snapshots:私库快照(调试版本)jar<br /> maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用。
  • 仓库类型

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

    3、增加新的代理源

    3.1 按照步骤添加新的代理源

    1. ![](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590652135717-160541c6-8bc5-4fed-a47e-df0aa22c9e68.png#align=left&display=inline&height=393&margin=%5Bobject%20Object%5D&originHeight=758&originWidth=1211&size=0&status=done&style=none&width=627)

    3.2 选择添加maven2的代理

    私有maven仓库搭建与使用 - 图4

    3.3 添加代理(Cache统一设置为200天 288000)

    1. ![](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590652135066-815187bd-e511-4547-bbe8-2611042373f3.png#align=left&display=inline&height=489&margin=%5Bobject%20Object%5D&originHeight=852&originWidth=1003&size=0&status=done&style=none&width=575)<br /> ![](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590652138105-ace2a193-9d58-45a0-bc60-54df063ec913.png#align=left&display=inline&height=401&margin=%5Bobject%20Object%5D&originHeight=701&originWidth=1047&size=0&status=done&style=none&width=600)

    3.4 逐个增加常用代理

    ```

  1. aliyun http://maven.aliyun.com/nexus/content/groups/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/ ```

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

    1. ![](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590652138112-b7087a6e-a9ca-4803-88da-e677c994eeb4.png#align=left&display=inline&height=491&margin=%5Bobject%20Object%5D&originHeight=874&originWidth=1080&size=0&status=done&style=none&width=607)

    3.6 设置私用仓库可重复发布

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

    三. maven配置使用Nexus

    1. 修改maven setting.xml文件配置

    1.1 设置 节点

    节点中添加如下子节点信息:
  1. <servers>
  2. <server>
  3. <id>releases</id>
  4. <username>admin</username>
  5. <password>admin23</password>
  6. </server>
  7. <server>
  8. <id>snapshots</id>
  9. <username>admin</username>
  10. <password>admin123</password>
  11. </server>
  12. </servers>

说明:username 和password根据自己搭建的nexus的情况而定,这里设置请求私有仓库的凭证信息。

1.2 配置 节点

修改 节点如下信息:

  1. <mirrors>
  2. <mirror>
  3. <id>nexus</id>
  4. <mirrorOf>*</mirrorOf>
  5. <name>Public Repository Mirror.</name>
  6. <url>http://ip:8081/repository/maven-public/</url>
  7. </mirror>
  8. </mirrors>

说明:ip:8081根据自己情况而定

1.4 配置节点

  1. <profiles>
  2. <profile>
  3. <id>dev</id>
  4. <repositories>
  5. <repository>
  6. <id>nexus</id>
  7. <name>Public Repositories</name>
  8. <url>http://ip:8081/repository/maven-public/</url>
  9. <releases>
  10. <enabled>true</enabled>
  11. </releases>
  12. </repository>
  13. <repository>
  14. <id>central</id>
  15. <name>Central Repositories</name>
  16. <url>http://ip:8081/repository/maven-central/</url>
  17. <releases>
  18. <enabled>true</enabled>
  19. </releases>
  20. <snapshots>
  21. <enabled>false</enabled>
  22. </snapshots>
  23. </repository>
  24. <repository>
  25. <id>release</id>
  26. <name>Release Repositories</name>
  27. <url>http://ip:8082/repository/maven-releases/</url>
  28. <releases>
  29. <enabled>true</enabled>
  30. </releases>
  31. <snapshots>
  32. <enabled>false</enabled>
  33. </snapshots>
  34. </repository>
  35. <repository>
  36. <id>snapshots</id>
  37. <name>Snapshot Repositories</name>
  38. <url>http://ip:8082/repository/maven-snapshots/</url>
  39. <releases>
  40. <enabled>true</enabled>
  41. </releases>
  42. <snapshots>
  43. <enabled>true</enabled>
  44. </snapshots>
  45. </repository>
  46. </repositories>
  47. <pluginRepositories>
  48. <pluginRepository>
  49. <id>plugins</id>
  50. <name>Plugin Repositories</name>
  51. <url>http://ip:8081/repository/maven-public/</url>
  52. </pluginRepository>
  53. </pluginRepositories>
  54. </profile>
  55. </profiles>

说明:配置个repository信息,ip:8081根据自己nexus搭建做出改变。

1.5 添加活跃profile

设置maven总是先从哪个profile拉取,对应的某个id,如下:

  1. <activeProfiles>
  2. <activeProfile>dev</activeProfile>
  3. </activeProfiles>

2. 往私有仓库发布jar包

2.1 创建一个maven工程

image.png

2.2 maven打包

  1. mvn clean package

image.png

2.3 通过命令上传jar包到私有仓库

  1. mvn deploy:deploy-file -Dmaven.test.skip=true \
  2. -Dfile=****demo-0.0.1-SNAPSHOT.jar \ #jar包绝对路径
  3. -DgroupId=com.ftlcloud \ #groupId
  4. -DartifactId=demo \ #artifactId
  5. -Dversion=1.0.0-SNAPSHOT \ #version
  6. -Dpackaging=jar \
  7. -DrepositoryId=snapshots \ #类型,有snapshots,releases,根据生成的jar结尾而定,如果以SNAPSHOT结尾则snapshots,其他releases
  8. -Durl=http://ip:8081/repository/maven-snapshots/ #仓库路径

image.png

2.3 配置pom.xml 简化上传

  1. pom文件中加入distributionManagement节点,注意:pom.xmlrepository里的id需要和.m2setting.xml里的server id名称保持一致
  1. <distributionManagement>
  2. <repository>
  3. <id>releases</id>
  4. <name>Nexus Release Repository</name>
  5. <url>http://ip:8081/repository/maven-releases/</url>
  6. </repository>
  7. <snapshotRepository>
  8. <id>snapshots</id>
  9. <name>Nexus Snapshot Repository</name>
  10. <url>http://ip:8081/repository/maven-snapshots/</url>
  11. </snapshotRepository>
  12. </distributionManagement>

2.4 发布私有公库

执行部署命令即可发布。

  1. mvn deploy

image.png

2.5 验证

  1. 登录Nexus,查看对应的仓库已经有相关的依赖包了 ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1112927/1590658971727-eb708edd-1f20-47de-82f3-23b46520748c.png#align=left&display=inline&height=276&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1310&originWidth=2864&size=647877&status=done&style=none&width=603)<br /> 注意以下几点:
  • 若项目版本号末尾带有 -SNAPSHOT,则会发布到snapshots快照版本仓库
  • 若项目版本号末尾带有 -RELEASES 或什么都不带,则会发布到releases正式版本仓库