首页 > 其他分享 >使用 Docker 搭建 Maven 私服(sonatype/nexus3)

使用 Docker 搭建 Maven 私服(sonatype/nexus3)

时间:2023-01-11 15:11:19浏览次数:58  
标签:xml maven 仓库 8880 mytools 私服 Maven nexus nexus3

date: 2023-01-11T12:09:16Z

nexus3

安装 nx3 & 创建仓库

官方文档:https://help.sonatype.com/docs

docker run -d -p 8880:8081 --name nexus \
-e INSTALL4J_ADD_VM_PARAMS="-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m" \
-e NEXUS_CONTEXT=nx \
sonatype/nexus3:3.37.3

# 更多参数请查看:https://hub.docker.com/r/sonatype/nexus3
  1. 访问 http://<your-ip>:8880/<NEXUS_CONTEXT>/
  2. 修改密码;禁用匿名访问
  3. 创建本地 blob 文件存储(类似命名空间?)
  4. 创建 mytools​ 仓库(maven2 格式 hostes 模式),指定存放位置为上一步创建的文件存储

settings.xml​ 配置账号密码

    <server>
      <id>mytools</id>
      <username>admin</username>
      <password>sSKBX8cxaFhZ@Zt</password>
    </server>

查看创建的仓库:

  1. 仓库地址
  2. 版本策略(默认为 RELEASE,版本号中不能包含 SNAPSHOT。可在创建仓库时修改为 mixed)

上传(depoly)

The deploy is the last phase of the maven lifecycle. In this phase, the build is completed and the current project is being copied to the remote repository. This makes the built project available for other projects to add as dependency or developers.

配置 pom.xml​(添加 deploy 时需要的配置)

<!--指定仓库地址 -->
<distributionManagement>
  <repository>
    <!-- server.id -->
    <id>mytools</id>
    <!--上传的位置。此处容易出错! -->
    <url>http://localhost:8880/nx/repository/mytools/</url>
  </repository>
</distributionManagement>

<build>
  <plugins>
    <!-- 发布 jar 的插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.7</version>
    </plugin>
    <!-- 发布源码插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <version>2.2.1</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

修改项目坐标(仓库默认策略是 RELEASE,所以 version 中不能有 snapshot)

<?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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>im.eg</groupId>
  <artifactId>dms</artifactId>
  <version>1.0.0-test</version>

...
# 上传(经过构建、测试、打包等步骤后上传)
mvn deploy

在其他项目中使用 nexus 仓库中的依赖

  1. 指定 nexus 认证信息

  1. 配置 pom.xml。指定仓库地址、server.id、gav 坐标
<repositories>
    <repository>
        <id>mynx</id>
        <url>http://localhost:8880/nx/repository/mytools/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>im.eg</groupId>
        <artifactId>dms</artifactId>
        <version>1.0.0-abc</version>
    </dependency>
</dependencies>

问题:上边 pom.xml 中指定的 nuxes 仓库地址可能要在别的地方二次指定,可否进行全局配置?

答:使用 profiles 标签进行全局配置(settings.xml 中)

<profiles>
    <profile>
        <id>mynxprofile</id>

        <!-- 依赖仓库 -->
        <repositories>
            <repository>
                <id>mynx</id>
                <url>http://localhost:8880/nx/repository/mytools/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>

        <!-- 插件仓库 -->
        <pluginRepositories>
            <pluginRepository>
                <id>aliyun-nexus</id>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>

...

配置完后可在 idea 的 maven 工具中指定使用的 profile

参考:https://blog.csdn.net/china_coding/article/details/128480154

标签:xml,maven,仓库,8880,mytools,私服,Maven,nexus,nexus3
From: https://www.cnblogs.com/engure/p/17043824.html

相关文章

  • maven包爆红解决方案
    转自:https://blog.csdn.net/qq_43705131/article/details/106165960 方案1:当一开始遇到导入的依赖报红了,直接把那段刚导入的对应依赖删了,然后又重新导入,它自动会刷......
  • idea创建maven + tomcat项目
                        移动文件夹:           找到tomcat文件目录          配置......
  • Maven-高级
    Mvaen高级1导入其他工程资源文件先install到仓库里然后根据组织名项目名版本号写在dependence里正常导入<dependence> <groupId></groupId><artifactId></art......
  • maven安装在idea中报错
    java.lang.RuntimeException:java.lang.RuntimeException:org.codehaus.plexus.component.repository.exception.ComponentLookupException:com.google.inject.Provisio......
  • maven引入本地jar包
    一、在pom文件中引用时使用本地路径:首先把jar包放到项目中,在目录下新建lib目录,将jar包放入lib下在pom下引入jar包<dependency><groupId>com.alibaba</groupId><arti......
  • maven标签详解
    依赖范围scope在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。compile:默认范围,用于编译provided:类似于编译,但支持你期待jdk或者容器提供,类似......
  • Maven 插件 git-commit-id-plugin,打包包含提交信息
    Maven打包发布版本可能会遇到自己的提交不起作用的情况,排查比较困难,可能需要拉下服务器上包,反编译查看是否包含自己的提交记录。如果使用的是GIT作为SCM,可以使用git-commi......
  • IDEA2022设置项目默认Maven仓库路径
    介绍我们在使用idea创建新项目时,如果没有提前做配置,那么每次创建maven项目都是使用默认的maven配置,每次还需要进行修改maven配置,十分不方便,那么如何在每次创建maven项目时,......
  • IDEA创建一个maven项目
    打开IDEA(我目前用的2019),建立一个maven项目,(maven要先配置好,前一篇)如下图:点finish后等几分钟。  IDEA中maven配置点击File->Settings->Build->BuildTools->Maven......
  • MAVEN环境搭建
    MAVEN是一个工具用来方便的导入jar包Maven的核心思想;约定大于配置有约束不要去违反官网地址:https://maven.apache.org/ 下载完成后解压即可。 建议,电脑上所......