通常,我在Maven settings.xml中配置了以下镜像
<mirror>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*</mirrorOf>
</mirror>我的理解是,这个镜像阻止了Maven从互联网上下载依赖项,即它只会在这个内部存储库中查找它们。
但是,每当我想要添加一个不在这个内部存储库中的依赖项时,我必须注释掉上面的文本,并将以下内容添加到项目的pom.xml中
<repository>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
</repository>当我进行这些更改时,Maven将检查本地存储库中的依赖项,如果没有找到,则从internet将其下载到本地存储库。一旦我有了我需要的依赖项,我就把我的配置改回来。
有没有一种方法可以获得我想要的行为-总是检查内部存储库,然后是公共(互联网)存储库-而不必将<repository>添加到每个项目的pom.xml中
理想情况下,我希望在settings.xml中指定此存储库一次,但似乎您只能在那里配置镜像。
发布于 2011-02-12 20:19:10
您可以尝试将maven配置为仅将镜像用于中央存储库,或者排除由某个id标识的存储库。
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>central</mirrorOf>
</mirror>或
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*,!internal-repository</mirrorOf>
</mirror>这些示例改编自maven settings和guide to mirror settings。
发布于 2014-01-28 19:25:15
这个问题很老了,但不管怎样:
在settings.xml中放置一个使用<repository>元素指定内部存储库的<profile>
...
<profile>
<id>devel-repos</id>
<repositories>
<repository>
<id>repo-release</id>
<url>http://repohost:repoport/path/to/release/repo</url>
</repository>
<repository>
<id>repo-snapshot</id>
<url>http://repohost:repoport/path/to/snapshot/repo</url>
</repository>
</repositories>
</profile>
...然后将上面的配置文件设置为<activeProfile>。这将为每个maven调用激活配置文件。
...
<activeProfiles>
<activeProfile>devel-repos</activeProfile>
</activeProfiles>
...这并没有避免多个存储库定义,但它给了您最重要的东西:一切都集中在settings.xml中,并且您的pom.xml是干净的(和可移植的)。
发布于 2011-02-13 10:50:09
看起来您可能没有正确配置或使用镜像。
理想情况下,您指定的镜像应该是一个repository manager,它应该透明地从internet中的各种存储库下载所请求的依赖项,并对其进行缓存,从而允许从镜像进行后续下载。
https://stackoverflow.com/questions/4972288
复制相似问题