我正在尝试使用maven下载远程回购的工件到我当地的nexus . 我在maven settings.xml中使用了镜像标签,但发现maven抱怨它无法找到我本地连接中不存在的工件而导致构建失败 . 我希望maven首先发现nexus中是否存在依赖关系,如果不存在依赖关系,则将依赖关系从远程repo下载到nexus . 我需要什么设置才能实现

这是我在maven settings.xml中的配置,使用nexus作为镜像:

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0                 http://maven.apache.org/xsd/settings-1.1.0.xsd">
      <activeProfiles>
        <activeProfile>nexus</activeProfile>
      </activeProfiles>

      <servers>
        <server>
          <id>nexus</id>
          <username>username</username>
          <password>password</password>
        </server>
      </servers>

      <mirrors>
        <mirror>
          <id>nexus</id>
          <name>Internal nexus mirror of central</name>
          <url>https://nexus-url/repository/maven/</url>
          <mirrorOf>*</mirrorOf>
        </mirror>
      </mirrors>
      <profiles>
        <profile>
          <id>nexus</id>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>

          <repositories>
            <repository>
              <id>nexus</id>
              <layout>default</layout>
              <url>https://nexus-url/repository/maven/</url>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
              </releases>
              <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
              </snapshots>
            </repository>
          </repositories>

          <pluginRepositories>
            <pluginRepository>
              <id>nexus</id>
              <url>https://nexus-url/repository/maven/</url>
            </pluginRepository>
          </pluginRepositories>
        </profile>
      </profiles>

      <pluginGroups/>
    </settings>

我使用Jenkins运行构建,我的JenkinsFile如下所示:

pipeline {
        agent { node { label 'host' } }
        environment {
            M2_HOME = '/usr/share/jenkins/apache-maven'
            M2          = "${M2_HOME}/bin"
            PATH        = "${M2}:${PATH}"
        }
        stages {
            stage('Build') {
                steps {
                    dir('directory') {
                        sh "#!/bin/bash \n" +
                            "mvn -T 1C install -am -Dfile=snapshot.tar -DgroupId=com.blah -DartifactId=app -Dpackaging=jar -Dversion=1.0-SNAPSHOT -DgeneratePom=true -Djavax.net.ssl.keyStore=/home/jenkins/.keystore/cacerts -Djavax.net.ssl.keyStoreType=jks -Djavax.net.ssl.keyStorePassword=password"
                    }
                }
            }
        }
    }

似乎没有任何依赖项被下载到Nexus,而只是本地下载到Jenkins节点,这是没有用的,因为Jenkins节点是临时的docker容器 . 如何从Maven Central,Spring和其他远程存储库下载依赖项并上传到Nexus?

编辑:我们正在使用Nexus 3.正在阅读一些Nexus 3不允许下载远程索引的博客 . 这是我无法让Nexus下载依赖项的问题吗?