Maven 2 如何手动禁用/黑名单Maven存储库
在我的基础项目中,我使用JasperReports的依赖项,它在pom中不存在存储库声明。当我运行每一个Maven commad时,这个Jasper存储库中都有寻找commons集合的依赖项,所以我需要等待超时。Maven 2 如何手动禁用/黑名单Maven存储库,maven-2,dependencies,repository,Maven 2,Dependencies,Repository,在我的基础项目中,我使用JasperReports的依赖项,它在pom中不存在存储库声明。当我运行每一个Maven commad时,这个Jasper存储库中都有寻找commons集合的依赖项,所以我需要等待超时。 这是我的基础项目,在我的其他项目中用作依赖项,因此我需要再次等待超时。 是否有办法将此存储库移至黑名单或覆盖此设置 注: 1.为什么搜索Jasper存储库,可能是因为范围 <dependency> <groupId>commons-collections
这是我的基础项目,在我的其他项目中用作依赖项,因此我需要再次等待超时。
是否有办法将此存储库移至黑名单或覆盖此设置 注:
1.为什么搜索Jasper存储库,可能是因为范围
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>[2.1,)</version>
<scope>compile</scope>
</dependency>
公地收藏
公地收藏
[2.1,)
编译
2.我解决这个问题的想法是更改jasper pom并使用代理存储库,但我正在寻找另一种选择。3.我使用jasperreports 1.3.3版本,我不想更改它 是否有办法将此存储库移至黑名单或覆盖此设置 据我所知,这是不可能的 为什么它要在Jasper存储库中搜索,可能是因为范围
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>[2.1,)</version>
<scope>compile</scope>
</dependency>
是的,我认为范围对这种行为负有“责任”。如果没有范围,Maven就不必检查远程存储库是否有比本地repo中可用版本更新的版本
我解决这个问题的想法是更改jasper pom并使用代理存储库,但我正在寻找另一种选择
修复jasper pom并使用代理存储库当然是理想的解决方案,但这并不总是可能的。不过,可能有一个解决办法。您是否尝试排除jasperreports具有范围的可传递依赖项,并在pom中自己提供它们(具有固定版本)。类似这样的情况:
<dependencies>
<dependency>
<groupId>jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>1.3.3</version>
<!-- Remove Transitive dependencies drawn by Jasper Report that we don't want -->
<exclusions>
<exclusion>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</exclusion>
...
</exclusions>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>2.1</version><!-- Or whatever version, as long as it's fixed -->
<scope>compile</scope>
</dependency>
....
<dependencies>
jasperreports
jasperreports
1.3.3
公地收藏
公地收藏
...
公地收藏
公地收藏
2.1
编译
....
这样,Maven就不必检查不存在的存储库,也不必等待超时。我想试试
我使用jasperreports 1.3.3版本,我不想更改它
没问题。您可以通过在settings.xml中使用mirrorOf声明来覆盖回购协议。尽管这不是它通常的用途,但在jasper reports repoid上设置一个mirrorOf并将其指向Central(repo1.maven.org)将有效地使其消失
更好的选择是使用类似的存储库管理器,然后您可以控制实际提供的代理和工件。以下内容不会告诉maven忽略特定的存储库:
<repository>
<id>repo1.maven</id>
<url>http://repo1.maven.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
repo1.maven
http://repo1.maven.org
假的
假的
@Pascal。谢谢它的帮助。Maven中的范围是邪恶的:)@cetnar很高兴它是有用的。我同意,范围不好,它们带来的问题比解决方案多。Fred下面关于它可以被禁用的回答似乎是正确的,我刚刚使用了它。也许是一个新功能?上述方法是将处于某种过渡状态的Maven repo列入黑名单的好方法pendency的pom.xml,并且正在引发问题(比如从java.net获得的可怕的301重定向),Maven central中已经存在组件。这件事发生在我身上-一个依赖项引用了一个技术预览存储库,现在被GA存储库所取代。用这个来阻止它,世界上一切都很好,但这是一个很难追踪的问题!这对我不起作用。我仍然可以从是repo。ID必须与声明POM中使用的ID匹配,因此我在此阻止从mvmsearch下载此查找:http://www.mvnsearch.org/maven2/commons-logging/commons-logging/maven-metadata.xml
覆盖的存储库ID必须是mvmsearch
。我通过添加到settings.xml禁用了java.net(/conf/settings.xml或~/.m2/settings.xml)…disabled-jave.nethttps://jcenter.bintray.com/ http://download.java.net/maven/2