如何强制 Maven 使用特定的存储库(并且只使用那个)?
How to force Maven to use a specific repository (and only that)?
我正在设置一个本地 Nexus 存储库,并试图说服我的本地 Maven 设置作为唯一访问该存储库。 Nexus repo 有一个组 maven-central 定义(引用自 Nexus 手册:)“......访问中央存储库,以前称为 Maven Central。”并且还应该缓存下载的数据。
因此,我将本地 Nexus 存储库输入到我的 [home]\.m2\settings.xml 中,如下所示:
...
<profile>
<id>alwaysActiveProfile</id>
<repositories>
<repository>
<id>RepoSynoProxy</id>
<name>Nexus Repo on Synology NAS</name>
<url>http://192.168.1.15:8081/repository/maven-central/</url>
</repository>
</repositories>
</profile>
</profiles>
...
<activeProfiles>
<activeProfile>alwaysActiveProfile</activeProfile>
</activeProfiles>
...
但出于某些奇怪的原因,当我 运行 Maven 开始从 https://repo.maven.apache.org/maven2/ 下载所有内容,而不是像我预期的那样从本地 URL 下载:
...
[INFO] Downloading from : http://192.168.1.15:8081/repository/maven-central/junit/junit/3.8.1/junit-3.8.1.pom
[INFO] Downloading from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom
[INFO] Downloaded from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom (998 B at 7.3 kB/s)
[INFO] Downloading from : http://192.168.1.15:8081/repository/maven-central/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] Downloading from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] Downloaded from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar (121 kB at 1.4 MB/s)
...
我的问题是:
首先:任何人都知道,为什么 http://192.168.1.15:8081/repository/maven-central/... 的请求显然不起作用?我在这里使用的是新下载并安装的 Nexus v3.18.0。 Maven-central 代理已经预定义,我没有进行任何特殊配置。显然这不起作用 "out-of-the-box".
其次:Maven 从哪里得到 URL https://repo.maven.apache.org/maven2/... 作为替代?如果 repo 不起作用,是否将其硬编码到 Maven 中作为回退?可以抑制它以便它只访问 settings.xml 中定义的回购协议吗?
您需要在 settings.xml 中配置一个镜像,它将覆盖 superpom 和其他 pom 文件中的存储库定义:https://help.sonatype.com/display/NXRM3/Maven+Repositories#MavenRepositories-ConfiguringApacheMaven
我正在设置一个本地 Nexus 存储库,并试图说服我的本地 Maven 设置作为唯一访问该存储库。 Nexus repo 有一个组 maven-central 定义(引用自 Nexus 手册:)“......访问中央存储库,以前称为 Maven Central。”并且还应该缓存下载的数据。
因此,我将本地 Nexus 存储库输入到我的 [home]\.m2\settings.xml 中,如下所示:
...
<profile>
<id>alwaysActiveProfile</id>
<repositories>
<repository>
<id>RepoSynoProxy</id>
<name>Nexus Repo on Synology NAS</name>
<url>http://192.168.1.15:8081/repository/maven-central/</url>
</repository>
</repositories>
</profile>
</profiles>
...
<activeProfiles>
<activeProfile>alwaysActiveProfile</activeProfile>
</activeProfiles>
...
但出于某些奇怪的原因,当我 运行 Maven 开始从 https://repo.maven.apache.org/maven2/ 下载所有内容,而不是像我预期的那样从本地 URL 下载:
...
[INFO] Downloading from : http://192.168.1.15:8081/repository/maven-central/junit/junit/3.8.1/junit-3.8.1.pom
[INFO] Downloading from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom
[INFO] Downloaded from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom (998 B at 7.3 kB/s)
[INFO] Downloading from : http://192.168.1.15:8081/repository/maven-central/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] Downloading from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] Downloaded from : https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar (121 kB at 1.4 MB/s)
...
我的问题是:
首先:任何人都知道,为什么 http://192.168.1.15:8081/repository/maven-central/... 的请求显然不起作用?我在这里使用的是新下载并安装的 Nexus v3.18.0。 Maven-central 代理已经预定义,我没有进行任何特殊配置。显然这不起作用 "out-of-the-box".
其次:Maven 从哪里得到 URL https://repo.maven.apache.org/maven2/... 作为替代?如果 repo 不起作用,是否将其硬编码到 Maven 中作为回退?可以抑制它以便它只访问 settings.xml 中定义的回购协议吗?
您需要在 settings.xml 中配置一个镜像,它将覆盖 superpom 和其他 pom 文件中的存储库定义:https://help.sonatype.com/display/NXRM3/Maven+Repositories#MavenRepositories-ConfiguringApacheMaven