我正在为我的项目使用maven v3.0.1。我的项目依赖于企业远程存储库中的工件。此外,我在公司有一个本地archiva存储库,其中包含本地工件,这些工件不在公司远程存储库中。
我想以这样的方式创建settings.xml:对于所有项目,它将首先在公司远程存储库中查找指定的工件,如果没有在那里找到,请在本地archiva存储库中查找工件。
我在<repository>
标记中添加了本地存储库,并为该<activeProfile>
启用了配置文件。但是查找并没有像预期的那样发生。分析发现mirrorOf
设置在那里起作用。以下是我的settings.xml。
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://corporate-repo:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
<repository>
<id>spring-snapshot</id>
<name>Spring Maven SNAPSHOT Repository</name>
<url>http://repo.springsource.org/libs-snapshot</url>
</repository>
<repository>
<id>internal</id>
<name>Local Release Repository</name>
<url>http://local-repo:8081/repository/internal</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
如何根据需要修改settings.xml以进行查找?是否可以在mirrorOf
设置中提供两个网址。我试过了
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://corporate-repo:8081/nexus/content/groups/public,http://local-repo:8081/repository/internal</url>
</mirror>
xml解析没有错误,但查找不起作用。任何人都可以阐明如何解决这个问题
答案 0 :(得分:0)
我尝试了很多选项,最后通过将mirrorOf设置调整到<mirrorOf>*,!internal</mirrorOf>
所以镜像设置是,
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*,!internal</mirrorOf>
<url>http://corporate-repo:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
*
确保除了内部仓库!internal
之外的所有请求都在公司仓库中进行查询。对于内部存储库,请在配置了存储库ID为internal