我遇到了一个新版本的库,它存在于不同的存储库中。我相信我必须更新我的settings.xml
和我的父级pom.xml
,它指定了新版本。
目前我的settings.xml
内容如下:
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<url>http://serenity.gm.edu/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>mods</id>
<url>http://7.169.72.8:8081/nexus/content/repositories/releases/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>mod-thirdparty</id>
<url>http://7.169.72.8:8081/nexus/content/repositories/thridparty/</url>
</repository>
<repository>
<id>mod-snapshots</id>
<url>http://7.169.72.8:8081/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
</profile>
</profiles>
<servers>
<server>
<id>Tomcat</id>
<username>admin</username>
<password>xxx</password>
</server>
</servers>
从中获取所有内容的默认镜像是宁静。我试图从7.169.72.8中提取自定义库mod3.2
,但2.3版本仍然从平静中获取。我尝试了许多<mirrorOf>
设置,例如*,!central
,但没有成功。
我的父pom.xml
非常简单,可以定义模块,权限和全局依赖项列表。以下是感兴趣的项目(显示时间太长)。
<project ...>
...
<distributionManagement>
<repository>
<id>releases</id>
<name>mod2-releases</name>
<url>http://7.169.72.8:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>mod2-snapshots</name>
<url>http://7.169.72.8:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<properties>
...
<mod2.version>3.2</mod2.version>
...
</properties>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mod2.commons</groupId>
<artifactId>mod2.commons.lang</groupId>
<version>${mod2.version}</version>
</dependency>
<dependency>
<groupId>mod2.commons</groupId>
<artifactId>mod2.commons.audit</groupId>
<version>${mod2.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
回顾一下 - 我试图从7.169.72.8
获取版本mod2版本3.2,但我可以从serenity
repo中获取mod2版本2.3。谢谢你的帮助。
答案 0 :(得分:0)
在您的配置中,您要为Central存储库声明多个镜像。但是,Maven does not support that:
请注意,给定存储库最多只能有一个镜像。换句话说,您无法将单个存储库映射到一组都定义相同值的镜像。 Maven不会聚合镜子,只是选择第一场比赛。如果要提供多个存储库的组合视图,请改用存储库管理器。
在你的情况下,Maven选择了第一个中心镜像,其标识为nexus
,而忽略了第二个镜像,其标识为mods
。因此,在获取工件时,它仅搜索nexus
并且无法找到它。
有几种解决方案:
7.169.72.8:8081
。如果其余内容托管在serenity.gm.edu
上,则您可以在serenity.gm.edu
上托管所有内容。您根本无法使用mods
镜像。让serenity.gm.edu
成为Central的镜像,只需声明一个新的存储库,它不是获取工件的中心。您已经声明了mod-thirdparty
和mod-snapshots
存储库,因此这是激活它们所使用的配置文件的问题:
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
settings.xml
中的。有了这个,Maven还会在为这些仓库配置的URL中查找您的工件(并且这些工件不会被nexus
镜像)。