首页 / 常见问题 / Maven 构建时,如何配置 Nexus 的地址?

Maven 构建时,如何配置 Nexus 的地址?

场景描述

平台在创建 Java 构建流水线时,无法配置 Nexus 的地址,可按照下面的操作步骤解决。

前提条件

您使用的 Jenkins 须为平用<创建实例>功能创建的的 Jenkins 工具。

解决方法

  1. 在左侧导航栏中,单击 工具链管理 > 工具链集成

  2. 单击 Jenkins 工具卡片。

  3. 单击 实例 右侧的 实例名称,进入部署详情页面。

  4. 在下方的 构建节点 区域,找到平台默认的构建节点 Java

  5. 单击 更新构建节点,开启 Maven Settings 文件 开关,参考以下示例,修改相关参数并添加代码至 内容 框中:

    参数 描述
    <servers> 配置 Nexus 的认证信息。
    <mirrors> 配置 profiles.profile.repositories.repository.idprofiles.profile.pluginRepositories.pluginRepository.id 的重定向镜像仓库地址。
    <profiles> 配置依赖仓库地址和插件仓库地址,profile.id 作为唯一标识。
    <activeProfiles> 配置 profile.id 启动时生效 profile。
    <?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">
    
      <pluginGroups></pluginGroups>
      <proxies></proxies>
    
      <servers>
          <server>
          <id>nexus-releases</id>
          <username>admin</username>
          <password>Nexus12345</password>
        </server>
        <server>
          <id>nexus-snapshots</id>
          <username>admin</username>
          <password>Nexus12345</password>
        </server>
      </servers>
    
      <mirrors>
        <mirror>
          <id>nexus-releases</id>
          <mirrorOf>*</mirrorOf>
          <url>http://192.168.1.1:31108/repository/maven-public/</url>
        </mirror>
        <mirror>
          <id>nexus-snapshots</id>
          <mirrorOf>*</mirrorOf>
          <url>http://192.168.1.1:31108/repository/maven-public/</url>
        </mirror>
      </mirrors>
    
      <profiles>
       <profile>
          <id>nexus</id>
          <repositories>
            <repository>
              <id>nexus-releases</id>
              <url>http://192.168.1.1:31108/repository/maven-public/</url>
              <releases><enabled>true</enabled></releases>
              <snapshots><enabled>true</enabled></snapshots>
            </repository>
            <repository>
              <id>nexus-snapshots</id>
              <url>http://192.168.1.1:31108/repository/maven-public/</url>
              <releases><enabled>true</enabled></releases>
              <snapshots><enabled>true</enabled></snapshots>
            </repository>
          </repositories>
          <pluginRepositories>
             <pluginRepository>
                    <id>nexus-releases</id>
                     <url>http://192.168.1.1:31108/repository/maven-public/</url>
                     <releases><enabled>true</enabled></releases>
                     <snapshots><enabled>true</enabled></snapshots>
                   </pluginRepository>
                   <pluginRepository>
                     <id>nexus-snapshots</id>
                      <url>http://192.168.1.1:31108/repository/maven-public/</url>
                    <releases><enabled>true</enabled></releases>
                     <snapshots><enabled>true</enabled></snapshots>
                 </pluginRepository>
             </pluginRepositories>
        </profile>
      </profiles>
    
      <activeProfiles>
          <activeProfile>nexus</activeProfile>
      </activeProfiles>
    
    </settings>
  6. 如果构建命令使用 mvn clean deploy,会将依赖包上传至上面已配置的 Nexus 中,除了上述步骤还需在 pom.xml 中配置 distributionManagement,代码示例如下:

    注意

    1. distributionManagement 被包含在 project 参数中。

    2. 配置 release 库和 snapshots 库时,根据 Nexus Repository 版本策略配置,两者的 URL 应不同,并且不能使用 group 类型的 Repository(也就是 maven-public)。

    <project>
    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <url>http://192.168.1.1:31108/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <url>http://192.168.1.1:31108/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    
    </project>
  7. 至此,配置完成。若当前项目的版本号的后缀名中带有 -SNAPSHOT,流水线就会将产物上传到 snapshots 库中,其他的会上传到 releases 库中。