我试图使用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下载依赖项的问题?