我有一个settings.xml
,如下所示: -
<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">
<servers>
<server>
<id>nReleases</id>
<username>test</username>
<password>test123</password>
</server>
<server>
<id>nSnapshots</id>
<username>test</username>
<password>test123</password>
</server>
</servers>
<profiles>
<profile>
<id>space</id>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>nReleases</id>
<name>Releases</name>
<url>http://someserver/repository/maven-releases/</url>
</repository>
<repository>
<id>nSnapshots</id>
<name>Snapshots</name>
<url>http://someserver/repository/maven-snapshots/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>space</activeProfile>
</activeProfiles>
</settings>
我希望maven先检查repo1.maven.org
然后再查看someserver
。有人能让我知道如何实现这一目标吗?
我正在使用Maven 3.3.9。
我已经完成了这个question并尝试更改在配置文件中声明repos的顺序,但它没有帮助。
<profile>
<id>space</id>
<repositories>
<repository>
<id>nReleases</id>
<name>Releases</name>
<url>http://someserver/repository/maven-releases/</url>
</repository>
<repository>
<id>nSnapshots</id>
<name>Snapshots</name>
<url>http://someserver/repository/maven-snapshots/</url>
</repository>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
</profile>
执行mvn clean install
tuk-MacBook-Pro-4:camel tuk$ mvn clean install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building camel 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://someserver/repository/maven-releases/org/apache/camel/camel-redis/2.16.3/camel-redis-2.16.3.pom
Downloading: http://someserver/repository/maven-snapshots/org/apache/camel/camel-redis/2.16.3/camel-redis-2.16.3.pom
答案 0 :(得分:2)
在Maven 2中没有明确指定设置中存储库的顺序,但是从Maven 3(以及MNG-4400的修复)开始,存储库总是在设置中按其声明顺序进行尝试。
可能发生的事情,以及可能导致问题的原因是Maven尝试存储库,无法执行此操作,并在本地存储库中存储它尝试失败的事实。这会导致在本地存储库中创建.lastUpdated
文件,并存储此信息。结果是Maven不会重新尝试从知道下载失败的存储库下载依赖项。因此,当您启动命令并且项目需要本地存储库中不存在的工件时,Maven仍将按其声明顺序尝试存储库,但它将跳过它已知失败的存储库。
但您可以通过在命令行上传递the -U
flag来强制它绕过此机制。它强制Maven更新版本和快照依赖项,而不查看.lastUpdated
文件。这样,它将重新尝试每个活动的远程存储库。